Java學習-055-Jsoup爬蟲經過設置獲取響應數據大小的最大值,解決因默認獲取 1MB 響應數據致使的沒法獲取所有的響應數據內容問題

在平常工做中,一般會遇到獲取各類網絡數據使用的狀況,Java中可以使用Jsoup(Python中可以使用 BeatifulSoup)進行數據的獲取及處理。網絡

今天有朋友問,在使用 Jsoup 進行請求數據時,獲取的響應結果信息一直不完整,而後幫忙解決了一下。下面把解決的方法記錄下,方便後續遇到的親,免受搜索卻解決不了之苦。url

 

解決步驟:調試

  一、腳本屢次執行時,未發生邏輯異常;code

  二、執行過程當中,因接口響應時長緣由,有超時響應,默認超時時間爲 30 秒;blog

    更改超時時間爲 100秒,以下所示:接口

Jsoup.connect(url).timeout(100000)

 

  三、調試爬蟲腳本,打印查看每次請求的響應數據大小,發現始終爲 1MB;源碼

Jsoup.connect(url).timeout(60000).execute().bodyAsBytes().length / 1024 / 1024

 

  四、查看 Jsoup 的源碼,發現 Jsoup 經過 HttpConnction.Request.maxBodySizeBytes 設置獲取的響應數據大小,默認爲 1MB,以下所示:io

  經過 Connection.maxBodySize(大小) 設置獲取的響應數據大小,以下所示:class

  

 

修改後,再次執行腳本,可成功獲取全部的響應內容信息。搜索

相關文章
相關標籤/搜索