导航:首页 > 源码编译 > httpclient获取网页源码

httpclient获取网页源码

发布时间:2023-09-13 21:50:39

‘壹’ java 获取网页源代码---有效防止乱码

前段时间做过这类功能,如何有效防止乱码,我们必须先知道一个网页的编码方式,是utf-8,还是gbk。

1.HttpURLConnection.getContentType();直接读取,效率高,但有很多时候读不到。只是text/html就完事了,没有charset.

2.使用第三方的HttpClient,执行效率较高。但读取网页头header也只适用部分站,很多网站服务段不设置,结果就读成了null.

3.最没有效率的判断方法就是使用inputStreamReader先把正页的html源码读取出来,之后截取charset后面编码。得到编码之后重新再读取一遍。但是效率很低。

做个总结:

/**
* 取得页面编码
*
* @param url
* @return
*/
public String getCharset(String url) throws Exception {
// log.info("进入读页面的关键词:" + keyword);
String charset = "";
int c;
HttpURLConnection httpurlcon = null;
// log.info("url:"+url);
// log.info("charset:"+charset);

log.info("url:" + url);

URL httpurl = new URL(url);
// System.out.println(url+str);

httpurlcon = (HttpURLConnection) httpurl.openConnection();
// google需要身份
httpurlcon.setRequestProperty("User-agent", "Mozilla/4.0");
charset = httpurlcon.getContentType();
log.info("charset1:" + charset);
// 如果可以找到
if (charset.indexOf("charset=") != -1)
charset = charset.substring(charset.indexOf("charset=")
+ "charset=".length(), charset.length());
// 否则读取response.Header头
else {
charset = this.getContentCharset();
log.info("charset2:" + charset);
}
// 如果charset还是为空,那么直接读网页来截取
if (charset == null) {
charset = this.readPageCharset(url);
log.info("charset31:" + charset);

}

return charset;
}

阅读全文

与httpclient获取网页源码相关的资料

热点内容
把解压包子放到水里 浏览:280
phpmongodb连接池 浏览:940
日本解压捏泡泡纸 浏览:115
环保参比算法 浏览:407
解压中的删掉是什么意思 浏览:761
王牌竞速什么时候能停止维修服务器 浏览:483
pdf阅读器官方 浏览:82
程序员那么爱心 浏览:302
字符a经过md5加密 浏览:416
绿色的小蝴蝶是个什么app 浏览:14
python编程输入数字输出年月日英文 浏览:626
程序员枪手 浏览:748
gm28服务器怎么设置 浏览:543
饿了么网站源码 浏览:332
天选程序员真的有用吗 浏览:918
微信登录服务器什么意思 浏览:352
溯源码粘碎图 浏览:137
qq绑定邮箱pop服务器地址 浏览:725
卡罗拉空调压缩机价格 浏览:893
华润it程序员 浏览:557