什么是Requests?
Requests是用python語言基於urllib編寫的,采用的是Apache2 Licensed開源協議的HTTP庫。與urllib相比,Requests更加方便,可以節約我們大量的工作,建議爬蟲使用Requests庫。
requests請求方式
requests提供的請求各個請求方式:import requests requests.get(url) # 發送一個 HTTP get請求: requests.post(url) # 發送一個 HTTP post請求: requests.put(url) # 發送一個 HTTP put請求: requests.delete(url) # 發送一個 HTTP delete請求: requests.head(url) # 發送一個 HTTP head請求: requests.options(url) # 發送一個 HTTP options請求:
主要最常用的就是post和get請求
get請求
get請求核心代碼是requests.get(url),具體例子如下:
import requests url = 'http://baidu.com' response = requests.get(url) print("response:", response)
運行輸出結果為:
這里:<>表示這是一個對象,也就是我們這里獲取的是一個response的對象,200表示狀態碼。
post請求
post請求核心代碼是requests.post(url,data={請求體的字典}),具體例子(百度翻譯)如下:
import requests url = 'https://fanyi.baidu.com' data = {'from': 'zh', 'to': 'en', 'query': '人生苦短,我用python' } response = requests.post(url, data=data) print("response", response)
data部分的參數,取自於頁面NetWork→Headers→Form Data。打印出來的結果是:<Response [200]>。
response方法
獲取網頁的解碼字符串
通過上述例子我們可以看到,不管是get請求還是post請求,我們得到的返回都是一個Response[200]的對象,但是我們想要得到的,應該是與網頁response下一樣的字符串對象,這時就需要用到response的方法了。
- response.text。獲取網頁的HTML字符串,該方式往往會出現亂碼,出現亂碼使用response.encoding='utf-8
1 import requests 2 url = 'http://baidu.com' 3 response = requests.get(url) 4 response.encoding = 'utf-8' 5 print(response.text)
-
response.content.decode()。把相應的二進制字節流轉化為str類型。
1 import requests 2 url = 'http://baidu.com' 3 response = requests.get(url) 4 print(response.content.decode('gbk'))
在這里我總結了一下四種獲取網頁源碼的四種方式,通過這四種方式,一定可以獲取到網頁正確解碼之后的字符串:
- response.content.decode()
- response.content.decode('gbk')
- response.text
- response.encoding="utf-8"
獲取其他屬性
1 import requests 2 response = requests.get("http://www.baidu.com") 3 print(type(response.requests.headers),response.requests.headers) #獲取請求頭 4 print(type(response.headers),response.headers) #獲取響應頭 5 print(type(response.cookies),response.cookies)#獲取響應cookie 6 print(type(response.url),response.url) #獲取響應url 7 print(type(response.requests.url),response.requests.url) #獲取請求url