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 ...