用HttpUrlConnection抓取網頁內容

2021-08-27 04:44:45 字數 1687 閱讀 9476

一、httpurlconnection連線之模擬瀏覽器

在諸多的**中,特別是大型的**,設定了必須是瀏覽器的請求才會回應。之所以這樣設定,就是為了防止我們這種專案給他產生無意義的請求(往往這種請求都是大批量,對其伺服器產生負荷)。那為了解決這個問題,我們需要在http請求中,新增屬性。

//此處是重點!!!

urlconn.setrequestproperty("user-agent", "mozilla/4.0 (compatible; msie 7.0; windows nt 5.1)"); 

這樣就設定好了,你可以隨意設定你的作業系統值,瀏覽器值,版本,只要正確就ok了。這樣就可以正常有效地訪問其**了。他可不知道你是不是瀏覽器。你即使是條狗,他也不知道。

二、完整的設定httpurlconnection的屬性值

urlconn.setusecaches(false);//不要用cache,用了也沒有什麼用,因為我們不會經常對乙個鏈結頻繁訪問。(針對程式)

urlconn.setconnecttimeout(6 * 1000);

urlconn.setreadtimeout(6*1000);

urlconn.setdooutput(true);

urlconn.setdoinput(true);

有什麼疑問的話,可以檢視jdk的api文件,這個可以實時看。至於為什麼要設定 gzip,而又不設定deflate,原因如下,有些**他不管你能接受什麼壓縮格式,統統也會壓縮網頁內容傳給你。當然ie,ff能處理好這些內容。所以我們通過瀏覽器檢視的時候完全正常。一般gzip的壓縮可以將乙個33k的檔案壓縮成7k,這樣會節約不少頻寬,但伺服器的負荷並沒有減輕,因為他要壓縮檔案呀。至於為什麼不用deflate,是由於絕大多數**的壓縮方式是用gzip,而在有些**中,明明是用的gzip卻返回deflate的壓縮標識。這有什麼意義呢,所以乾脆就告訴伺服器,我不接受deflate,因為他太醜了,又長,哪像gzip這麼潮呀。呵呵,對於瀏覽量大的靜態網頁伺服器,這樣做很是必要。100m的獨享伺服器,他也只有100m呀。

三、開始採集某個網頁的內容

該方法就是傳入乙個httpurlconnection的鏈結,和該檔案的字符集編碼,就可以返回其網頁內容了。

}至此乙個簡單的採集工具類誕生了,他的優美在於,**少,不用引入任何包。純jdk,一樣能幹許多事。有時不希望把本來簡單的事情搞得複雜化。雖然不要創造重複的輪子,但我們不能純拿來主義,就像這樣乙個簡單的功能,不需要搞得太複雜。只要不dry就可以了,這樣自己也能一點點地進步。

用Margin還是用Padding

用margin還是用padding 何時應當使用margin 需要在border外側新增空白時。空白處不需要背景 色 時。上下相連的兩個盒子之間的空白,需要相互抵消時。如15px 20px的margin,將得到20px的空白。何時應當時用padding 需要在border內測新增空白時。空白處需要背...

用Margin還是用Padding

用margin還是用padding這個問題是每個學習css高階時的必經之路。css邊距屬性定義元素周圍的空間。通過使用單獨的屬性,可以對上 右 下 左的外邊距進行設定。也可以使用簡寫的外邊距屬性同時改變所有的外邊距。w3school 邊界 margin 元素周圍生成額外的空白區。空白區 通常是指其他...

用yaml寫用例

第一步 安裝yaml,在執行裡輸入 pip install pyyaml 檢驗是否安裝成功,在pycharm裡輸入 import yaml 第二步 建立乙個file,字尾寫yaml或yml 在yml檔案裡寫入單個使用者名稱和密碼 開啟yml檔案並以字典的形式列印出來 執行結果 在yml檔案裡寫入多個...