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

熱點內容
廣東分布式伺服器雲主機 瀏覽:578
伺服器忙打不開怎麼辦 瀏覽:10
tif壓縮軟體 瀏覽:408
程序員那麼可愛陸漓上班第1天 瀏覽:950
macbookair自帶什麼app 瀏覽:696
如何關了加密的軟體 瀏覽:577
程序員p2p待遇 瀏覽:920
ipd編譯要求 瀏覽:931
壓縮解壓王怎麼用 瀏覽:29
伺服器共享文件如何備份 瀏覽:752
買安卓手機怎麼在官網買 瀏覽:120
詩詞入門PDF 瀏覽:361
毒app是什麼單位 瀏覽:64
如何自己編譯android系統 瀏覽:792
phpmysqlpdomysqli 瀏覽:808
php修改sql語句 瀏覽:720
android有道api 瀏覽:387
撓耳營水表用的什麼app 瀏覽:54
戰錘40kpdf 瀏覽:381
java判斷字元串是漢字 瀏覽:468