導航:首頁 > 源碼編譯 > 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獲取網頁源碼相關的資料

熱點內容
美團的伺服器是什麼 瀏覽:357
axure原型設計精髓pdf 瀏覽:376
svox文件夾有用嗎 瀏覽:506
怎樣才可以給軟體添加密鑰 瀏覽:587
光纖通信原理pdf 瀏覽:207
c需要用什麼編譯器 瀏覽:702
python設置斷點調試 瀏覽:313
pc手柄怎麼連接安卓 瀏覽:33
dll解壓不成功 瀏覽:343
連接地址伺服器失敗是什麼 瀏覽:399
台達dvp14ss2編程電纜 瀏覽:133
單片機開發板設置技巧 瀏覽:343
阿里雲伺服器怎麼配置git 瀏覽:414
androidcameraid 瀏覽:430
活塞式空氣壓縮機原理 瀏覽:791
vt編輯編制編譯 瀏覽:807
抖音優質創作者推薦程序員 瀏覽:75
攝像機多控神器讓拍攝輕松解壓 瀏覽:422
杭州的伺服器地址 瀏覽:277
全醫葯學大詞典pdf 瀏覽:809