利用requests庫進行爬蟲簡介

2021-09-26 21:11:02 字數 3620 閱讀 7585

其實最常使用的方式也就事 get 和 post 分別用於獲取和上傳,即分別用於資料性**和檢索性**.

get簡單粗暴,就介紹一下post:

post 請求

通常,你想要傳送一些編碼為表單形式的資料——非常像乙個 html 表單。要實現這個,只需簡單地傳遞乙個字典給 data 引數。你的資料字典在發出請求時會自動編碼為表單形式,如:

>>

> payload =

>>

> r = requests.post(

"", data=payload)

>>

>

print

(r.text),...}

而如果是用乙個key擁有多個value就可以使用元組進行data引數的傳遞:

>>

> payload =((

'key1'

,'value1'),

('key1'

,'value2'))

>>

> r = requests.post(

'', data=payload)

>>

>

print

(r.text),.

..

很多時候你想要傳送的資料並非編碼為表單形式的。如果你傳遞乙個 字串 而不是乙個 字典,那麼資料會被直接發布出去。

例如,github api v3 接受編碼為 json 的 post/patch 資料

>>

>

import json

>>

> url =

''>>

> payload =

>>

> r = requests.post(url, data=json.dumps(payload)

)

(json,dumps()是將字典變為json格式,與之相對的是json.loads())

此處除了可以自行對 字典 進行編碼,你還可以使用 json 引數直接傳遞,然後它就會被自動編碼。這是 2.4.2 版的新加功能:

>>

> url =

''>>

> payload =

>>

> r = requests.post(url, json=payload)

requests 使得上傳多部分編碼檔案變得很簡單:

>>

> url =

''>>

> files =

>>

> r = requests.post(url, files=files)

>>

> r.text,...}

你可以顯式地設定檔名,檔案型別和請求頭:

>>

> url =

''>>

> files =)}

>>

> r = requests.post(url, files=files)

>>

> r.text

,...

}

形式為字典,表示所用的user-agent 如:

import requests

url =

''response = requests.get(url)

# 列印響應對應請求的請求頭資訊

print

(response.request.headers)

其結果為

請求引數為url後接的?選項,其形式為字典

import requests

url =

''kw =

requests.get(url,params=kw)

可以直接將parames以?+params的形式加在url後面傳送請求

import requests

headers =

url =

'/s?wd=python'

# kw =

# url中包含了請求引數,所以此時無需params

response = requests.get(url, headers=headers)

try

: r = requests.get(url,timeout =30)

#設定限制時間為30s

r.raise_for_status(

)#判斷網路連線狀態

return r.text

except

:return

""

用於防反爬取的同時,讓爬取**無法獲取本機的真實ip位址

**ip的分類

根據**ip的匿名程度,**ip可以分為下面四類:

透明**(transparent proxy):透明**雖然可以直接「隱藏」你的ip位址,但是還是可以查到你是誰。

匿名**(anonymous proxy):使用匿名**,別人只能知道你用了**,無法知道你是誰。

高匿**(elite proxy或high anonymity proxy):高匿**讓別人根本無法發現你是在用**,所以是最好的選擇。

混淆**(distorting proxies):與匿名**相同,如果使用了混淆**,別人還是能知道你在用**,但是會得到乙個假的ip位址,偽裝的更逼真

proxies =

requests.get(

"", proxies = proxies)

cookie用於爬取需要登陸的**頁面,其使用方式有兩種

1.再header中加入cookie

#cookie的格式也是字典格式

2.也可以使用session獲取上級的url儲存的本地cookie:

session = requests.session()

response = session.get(url,headers)

session例項在請求了乙個**後,對方伺服器設定在本地的cookie會儲存在session中,下一次再使用session請求對方伺服器的時候,會帶上前一次的cookie

遇到網路問題(如:dns 查詢失敗、拒絕連線等)時,requests 會丟擲乙個 connectionerror 異常。

如果 http 請求返回了不成功的狀態碼, response.raise_for_status() 會丟擲乙個 httperror 異常。

若請求超時,則丟擲乙個 timeout 異常。

若請求超過了設定的最大重定向次數,則會丟擲乙個 toomanyredirects 異常。

所有requests顯式丟擲的異常都繼承自 requests.exceptions.requestexception

Python利用Requests庫寫爬蟲(一)

coding utf 8 import requests url r requests.get url print r.text coding utf 8 import requests url payload r requests.get url,params payload print r.te...

爬蟲入門 Requests庫

首先用管理員許可權開啟cmd命令列,然後直接輸入 pip install requests,即可安裝成功 需要聯網 方法 作用requests.request 構造乙個請求,它是支撐以下方法的基礎方法 requests.get 獲取html網頁的主要方法,請求獲取url位置的資源 requests....

資料爬蟲 requests庫

import requests response requests.get 模擬瀏覽器,欺騙瀏覽器,獲取和瀏覽器一致的內容。url headers requests.get url,headers headers url問號後面的就是請求引數,也叫查詢字串。kw response requests....