趣說Python爬蟲02--requests注意事項

趣說Python爬蟲02--requests注意事項

趣說Python爬蟲02--requests注意事項


上回說到Python大星為走上爬蟲之巔,從頭修煉九天奇書《requests寶典》

趣說Python爬蟲02--requests注意事項

修煉前,先鍛鍊一把武器,取名曰:九轉點星槍,他就是“requests庫”

作為一名初級爬者,煉器(安裝)“requests庫”,是你必備的一個技能。

趣說Python爬蟲02--requests注意事項

Python大星手提九轉點星槍,來到了“試煉之路”

只聽見試煉先知傳聲:欲進試煉之路,先得通過2道關,GET和POST請求。

說時遲,那時快。轉眼間,python大星來到“初試場所”

httpbin.org,一個免費提供HTTP請求和測試的網站。

該網站會判斷如果客戶端發起的是 GET 請求的話,它返回相應的請求信息

趣說Python爬蟲02--requests注意事項

趣說Python爬蟲02--requests注意事項

可以發現,我們成功發起了 GET 請求,返回結果中包含請求頭URLIP 等信息。

你以為就這麼簡單?

剛剛小試牛刀,一個無參的GET請求,接下來增加點難度

有參的GET請求:

趣說Python爬蟲02--requests注意事項

你以為我只會這一種嗎?大錯特錯,看招:

趣說Python爬蟲02--requests注意事項


魔高一尺,道高一丈。很多網站為了防止初級爬者騷擾,設置了一道門檻。

舉個栗子,知乎網站:

趣說Python爬蟲02--requests注意事項

趣說Python爬蟲02--requests注意事項


why?他為什麼拒絕了我?

道理很簡單,“知乎”是大戶人家,你以為是你隨便登堂入室的嗎?

你得懂點禮數,寫個拜訪帖。

趣說Python爬蟲02--requests注意事項


User-Agent ,這個就是我們的

“拜訪貼”,瀏覽器標識信息

一般我們抓過來的“俘虜”,屬於“文字兵”。

對於特殊的“俘虜”,比如“圖片”、“視頻”、“音頻”,他們經過一層偽裝,

直接抓取的話,我們得到的是一串“亂碼”,沒有參考價值。

趣說Python爬蟲02--requests注意事項

r.content帶有一個 b,這代表是 bytes 類型的數據。

這個時候,就用到了你的基本功--Python基礎

趣說Python爬蟲02--requests注意事項

趣說Python爬蟲02--requests注意事項

這裡用了 open 方法,它的第一個參數是文件名稱,第二個參數代表以二進制寫的形式打開,可以向文件裡寫入二進制數據。


POST請求與GET請求一樣,替換下名稱即可。

如果你很順利輕鬆地看到這

少年我觀你骨骼驚奇,乃是難得一見的練武奇才...

趣說Python爬蟲02--requests注意事項

現在,你已經是一名合格一級爬者...

萊蒂斯俺的杰特們,準備好了嗎?

文件上傳

任務:某網站註冊,需要上傳你帥氣的圖片

OK,我們用httpbin測試哈!

趣說Python爬蟲02--requests注意事項

Cookies

任務:某些網站資源,需要登錄後獲取

趣說Python爬蟲02--requests注意事項

cookies就好像你瀏覽網頁的一張身份證

登錄“今日頭條”,獲取cookies信息

趣說Python爬蟲02--requests注意事項

在headers中傳入Cookie參數

趣說Python爬蟲02--requests注意事項


Session 對象

在接口測試的過程中,經常會遇到有些接口需要在登錄的狀態下才能運行,否則會進行相應的提示,例如“請登錄“。

比較麻煩的做法:每次接口請求後獲取到響應中的cookie,然後下次請求帶上這個cookie;

有其他方法???

趣說Python爬蟲02--requests注意事項

requests的 Session會話對象來進行處理。會話對象讓你能夠跨請求保持某些參數。

它也會在同一個 Session 實例發出的所有請求之間保持 Cookie。

看看,就這麼簡單。

趣說Python爬蟲02--requests注意事項


代理設置

“試煉之路”,有很多任務,完成任務可以增加“試煉積分

對於“一級爬者”,必須完成3個“五星任務

五星任務描述:某網站,當受到大規模頻繁請求,會禁客戶端的 IP,導致一定時間段內無法訪問

設置User Agent(用戶代理)

趣說Python爬蟲02--requests注意事項

服務器能夠識別客戶使用的操作系統及版本、CPU 類型、瀏覽器及版本、瀏覽器渲染引擎、瀏覽器語言、瀏覽器插件等。

怎麼辦?代理怎麼設置?

趣說Python爬蟲02--requests注意事項

常見的代理:

Android

Mozilla/5.0 (Linux; Android 4.1.1; Nexus 7 Build/JRO03D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19
Mozilla/5.0 (Linux; U; Android 4.0.4; en-gb; GT-I9300 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30
Mozilla/5.0 (Linux; U; Android 2.2; en-gb; GT-P1000 Build/FROYO) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1

Firefox

Mozilla/5.0 (Windows NT 6.2; WOW64; rv:21.0) Gecko/20100101 Firefox/21.0
Mozilla/5.0 (Android; Mobile; rv:14.0) Gecko/14.0 Firefox/14.0

Google Chrome

Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.94 Safari/537.36
Mozilla/5.0 (Linux; Android 4.0.4; Galaxy Nexus Build/IMM76B) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.133 Mobile Safari/535.19

iOS

Mozilla/5.0 (iPad; CPU OS 5_0 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9A334 Safari/7534.48.3
Mozilla/5.0 (iPod; U; CPU like Mac OS X; en) AppleWebKit/420.1 (KHTML, like Gecko) Version/3.0 Mobile/3A101a Safari/419.3

超時設置

趣說Python爬蟲02--requests注意事項

當網站請求超時時,我們有一件“法寶”可以使用,設置超時時間

特別國外的一些網站,不設置超時時間

那就得“天荒地老,海枯石爛”

趣說Python爬蟲02--requests注意事項

趣說Python爬蟲02--requests注意事項


分享到:


相關文章: