資料抓取之requests總結

2021-10-01 02:22:32 字數 2205 閱讀 3509

python 爬蟲之requests總結

requests:讓http服務人類

requests唯一的乙個非轉基因的python http庫,人類可以安全享用

requests繼承了urllib2的所有特性。requests支援http連線保持和連線池,支援使用cookie保持會話,支援檔案上傳,支援自動確定響應內容的編碼,支援國際化的url和post資料自動編碼。

安裝方式

pip install requests
基本get請求(headers引數和parmas引數)

1.最基本的get請求可以直接用get方法

response = requests.get("")

#也可以這麼寫

#response = requests.request("get", "")

2.新增headers和查詢引數

如果想新增headers,可以傳入headers引數來參加請求頭中的headers資訊,如果要將引數放在url中傳遞,可以利用params引數。

import requests

kw =

#params接收乙個字典或者字串的查詢引數,字典型別自動轉換為url編碼,不需要urlencode()

response = requests.get("s?", params=kw, headers = headers)

#檢視響應內容,response.text返回的是unicode格式的資料

print(response.text)

#檢視響應內容,response.content返回的位元組流資料

print(response.content)

#檢視完整url位址

print(response.url)

#檢視響應頭部字元編碼

print(response.encoding)

#檢視響應碼

print(response.status_code)

執行結果

......

......

's?wd=%e9%95%bf%e5%9f%8e'

'utf-8'

200

使用response.text時,requests會基於http響應的文字編碼自動解碼響應內容,大多數unicode字符集都能被無縫地解碼。

使用response.content時,返回的是伺服器響應資料的原始二進位制位元組流,可以用來儲存等二進位制檔案。

基本post請求(data引數)

1.最基本的get請求可以直接用post方法

response = requests.post("", data=data)
2.傳入data資料

對於post請求來說,我們一般需要為它增加一些引數。那麼醉基本的穿參方法可以利用data這個引數。

import requests

formdata =

url = ""

response = requests.post(url, data=formdata, headers=headers)

print(response.text)

#如果是json檔案可以直接顯示

print(response.json())

執行結果

]],"smartresult":}

]], u'smartresult': , u'type': u'en2zh_cn'}

**(proxies引數)

如果需要使用**,你可以通過為任意請求方法提供proxies引數來配置單個請求:

import requests

#根據協議內容,選擇不同的**

proxies =

response = requests.get("", proxies = proxies)

print(response.text)

也可以通過本地環境變數http_proxy和https_proxy來配置**:

資料抓取之Countly的安裝

最新穩定版 wget qo bash開發版 wget qo bash s deverror failed to download chromium r549031 set puppeteer skip chromium download env variable to skip download.n...

php抓取之fread結束判斷

楠哥給了個程式,不知道為什麼用fsocket鏈結,然後用fread或fgets讀資料,每一步都是跟手冊一致,但是feof總是沒有辦法正確判斷已經到檔案尾部,必須要等到超時才推出 所以速度超級慢 構造頭部部分及鏈結部分手冊有很多例子,不再贅述 解決辦法如下 sock fsockopen host ur...

Session提高requests的抓取速度小技巧

使用requests抓取資料的時候,爬蟲會模擬瀏覽器的行為,但是可能不知道,當開啟乙個網頁的時候,requests.get 可能速度很快,但是如果幾十個上百個 的時候呢,這個差距就出來了,例如下面。import requests import time start time.time for in ...