最近做爬蟲相關工作,我們平時用httpwebrequest比較多,每乙個url都要建立乙個httpwebrequest例項,
而且有些**驗證比較複雜,在登陸及後續抓取資料的時候,每次請求需要把上次的cookie傳遞給這次請求。
記得這篇部落格(結尾,dudu總結了:
httpclient最與眾不同的地方是同乙個httpclient例項可以發出多次請求,每次請求是可以是完全不同的url。
而乙個httpwebrequest例項對應於乙個url的一次請求。這才是httpclient與httpwebrequest的最大區別所在。
那麼為什麼不用httpclient呢?
本著學習的目的,那我就拿知乎練習一下,看看httpclient好用否?
1,分析登陸頁:
根據上圖設定 defaultrequestheaders
//1.首頁
var response = await
h.getasync(index);
string content = await
response.content.readasstringasync();
if(response.issuccessstatuscode)
else
2,分析登陸頁:我這裡是手機和密碼登入):
分析:除了要設定defaultrequestheaders,還需獲取_xsrf的值,
//3. 登入成功後,後面就由大家隨便折騰了。這裡獲取登陸後的首頁資訊吧。2.登陸
//post引數
}
//4,我也不對資料做處理了,看看結果:3.抓取首頁
h.defaultrequestheaders.clear();
h.defaultrequestheaders.add(
"useragent
", configs.chromeagent);
h.defaultrequestheaders.add(
"accept-language
", "
zh-cn,zh;q=0.8,en-us;q=0.6,en;q=0.4");
h.defaultrequestheaders.add(
"accept-encoding
", "
gzip, deflate, sdch");
h.defaultrequestheaders.add(
"accept
", "");
response = await
h.getasync(index);
content = await response.content.readasstringasync();
上圖是除錯狀態下的視覺化工具檢視。
複雜的無法識別的驗證碼就只能用打碼兔了,其實也可以自己寫個類似打碼兔的軟體,但需要有人值守,人工識別驗證碼。
這這麼點東西,昨晚花費了3小時(9-12),今早寫部落格又花費了1小時。
httpclient模擬登陸微博問題
我用httpclient模擬登陸微博報如下錯誤 debug requestaddcookies cookie version 0 name usrhawb value usrmdins212 186 domain weibo.com path expiry null match weibo.com ...
Mac模擬登陸知乎
10001 請求引數異常,請公升級客戶端後重試 mac 在terminal 先其中乙個終端,不要關閉 之後在python檔案中正常編寫 先來乙個測試檔案 coding utf 8 from selenium import webdriver from selenium.webdriver.chrom...
python模擬登陸知乎
恢復內容開始 在完成前面的階段的任務之後,我們現在已經能夠嘗試著去模擬登入一些 了。在這裡我們模擬登入一下知乎做一下實驗。筆者在這裡總共用了三天多的時間,下面給大家分享一下筆者是怎麼一步一步的模擬登入成功的。也希望大家能夠吸取我的教訓。初步的模擬登入 下面這段 是筆者最初寫的,我們慢慢來看 impo...