標籤:ace 匯入 example 用戶端 請求 操作 dict 列印 http
Requests是一個實用、簡單、強大的Python HTTP用戶端庫,編寫爬蟲和測試伺服器響應資料時經常會用到。Requests 能夠完全滿足如今網路的需求。接下來我們從最基本的get post 請求開始 到進階特性一步一個腳印去學習。學習是個漸進的過程,只有腳踏實地不斷的去練習才能掌握這些重要的知識點。
一、發送請求 get /post
按照規例首先要匯入Requests模組》》》
import requests
r=requests.get(‘https://www.baidu.com‘)
r=requests.post(‘http://httpbin.org/post‘,data={‘key‘:‘value‘})
以上就短短這麼一行代碼就完成了get/post請求,漂亮優雅對吧,當然這隻是requests的冰山一角。
二、傳遞參數
在大型的系統項目中,我們的url不會是這麼簡單,往往是要傳很多查詢的參數,一般都是以索引值對的方式寫在url後面(以get請求為例子),例如https://www.baidu.com/get?key=val&name=Myname
Requests允許我們使用params關鍵字使用字典來傳參,例如:
pram={‘key1‘:‘val1‘,‘key2‘:‘val2‘}
r=requests.get(‘https://www.baidu.com/get‘,params=pram)
print(r.url)---列印出來的是https://www.baidu.com/get?key1=val1&key2=val2
除了以上我們還可以將一個列表傳進去:
pram={‘key1‘:‘val1‘,‘key2‘:‘val2‘,‘list‘:[value1,value2]}
r=requests.get(‘https://www.baidu.com/get‘,params=pram)
print(r.url)---列印出來的是https://www.baidu.com/get?key1=val1&key2=val2&list=value1&list=value2
以上是關於get請求傳參的範例---post傳參也是同樣操作r=requests.post(‘https://www.baidu.com/get‘,data=pram)。
三、擷取響應內容
r=requests.get(‘https://www.baidu.com/‘)
r.text(文本響應內容)或r.content(二進位響應內容)或r.content.json()(json響應內容);在一般情況下擷取的圖片、mp3.....需要儲存為本地檔案的時候操作也很簡單:如下:
r=requests.get(‘https://www.baidu.com/fa.ico‘)
with open(‘fa.ico‘,‘wb‘) as fb:
fb.write(r.content)
四、定製要求標頭
url = ‘https://api.github.com/some/endpoint‘
headers = {‘user-agent‘: ‘my-app/0.0.1‘}
r = requests.get(url, headers=headers)
五、Cookie
擷取響應資訊的Cookie
url = ‘http://example.com/some/cookie/setting/url‘
r = requests.get(url)
r.cookies[‘example_cookie_name‘]
提交Cookie到伺服器
url = ‘http://httpbin.org/cookies‘
cookies = dict(cookies_are=‘working‘)
r = requests.get(url, cookies=cookies)
六、逾時
r=requests.get(‘http://github.com‘, timeout=5)
timeout 僅對串連過程有效,與響應體的下載無關。 timeout 並不是整個下載響應的時間限制,而是如果伺服器在 timeout 秒內沒有應答,將會引發一個異常(更精確地說,是在 timeout 秒內沒有從基礎通訊端上接收到任何位元組的資料時)
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------完美分隔線
一、代理
import requests
proxies = {
"http": "http://10.10.1.10:3128",
"https": "http://10.10.1.10:1080",
}
requests.get("http://example.org", proxies=proxies)
若你的代理需要使用HTTP Basic Auth,可以使用 http://user:[email protected]/ 文法:
proxies = {
"http": "http://user:[email protected]:3128/",
}
------------------------------------------------------------------------下一篇將詳細介紹解析庫的使用敬請期待
Python爬蟲開發系列之三》Requests請求庫的使用