使用Java HttpURLConnection抓取網頁內容(一)限制返回的網頁大小


  最近接到一個新的需求,要求給定一個url地址,獲取該網頁的title和圖標地址,大致的思路是使用HttpUrlConnection抓取網頁的源碼,然后使用正則表達式匹配網頁的標題和圖標。

開發測試的過程中遇到了N多問題,簡單總結一下;

(一).限制返回的網頁大小

  在使用HttpUrlConnection獲取網頁內容時,最基本的做法就是獲取http輸入流,然后讀取完整的網頁內容,最后關閉輸入流和http連接,但這里需要考慮的就是由於需求只是為了獲取網頁頭信息中的title和icon,因此不需要下載完整的網頁內容,只需要保證取到完整的頭信息就行,思路就是從http輸入流中讀取指定大小的數據。

 1 try (InputStream inputStream = httpURLConnection.getInputStream();
 2       InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
 3       BufferedReader reader = new BufferedReader(inputStreamReader);) {
 4 
 5                 // 只獲取10KB的數據
 6                 char[] chars = new char[10 * 1024];
 7                 reader.read(chars, 0, 10 * 1024);
 8 
 9                 httpURLConnection.disconnect();
10                 return new String(chars);
11             }

  驗證了幾個比較大型的網站,10KB的數據足夠獲取到head信息。

 
        

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM