requests庫是一個流行的用於發送Http請求的Python第三方庫, 其設計簡潔高效可以完美替代默認的urllib。
使用pip安裝requests:
pip install requests
引入模塊:
import requests
發送GET請求:
response = requests.get(url)
在response對象中可以得到響應的相關信息。
>>> response = requests.get('http://www.cnblogs.com')
>>> response = requests.get('http://www.cnblogs.com/Finley/')
>>> >>> response.status_code
200
>>> response.text
<!DOCTYPE html>
<html>
...
>>> response.raw # 獲得原始響應
<requests.packages.urllib3.response.HTTPResponse object at 0x10e3b3490>
>>> response.request # 獲得請求對象
<PreparedRequest [GET]>
發送其它方法的請求:
response = requests.post(url)
response = requests.head(url)
response = requests.delete(url)
response = requests.put(url)
response = requests.options(url)
傳遞url參數:
response = requests.get(url, params={key:val})
查看已經編碼的url: response.url
添加請求頭:
response = requests.get(url, headers={key: val})
查看請求頭和響應頭:
>>> response.headers
{'Content-Encoding': 'gzip',
'Transfer-Encoding': 'chunked',
'Expires': 'Mon, 21 Nov 2016 09:01:00 GMT',
'Vary': 'Accept-Encoding',
'Last-Modified': 'Mon, 21 Nov 2016 09:00:50 GMT',
'Connection': 'keep-alive',
'X-UA-Compatible': 'IE=10',
'Cache-Control':
'private, max-age=10',
'Date': 'Mon, 21 Nov 2016 09:00:50 GMT',
'Content-Type': 'text/html; charset=utf-8'
}
>>> response.request.headers
{'Connection': 'keep-alive',
'Accept-Encoding': 'gzip, deflate',
'Accept': '*/*',
'User-Agent': 'python-requests/2.11.1'
}
模擬提交表單:
response = requests.post(url, data={key: val})
可以使用multipart-encoded上傳文件:
files = {'file': open(path, 'rb')}
response = requests.post(url, files=files)
也可以設置文件名和請求頭:
files = {
'file': (filename, open(path, 'rb')),
header_name: header_val
}
response = requests.post(url, files=files)
添加cookies:
response = requests.post(url, cookies={key: val})
查看cookies:
>>> response.cookies
<RequestsCookieJar[]>
requests只能提供阻塞IO, 使用timeout以秒為單位設置響應超時時間:
response = requests.post(url, timeout=0.2)