requests是urllib的高級版年枕,非內(nèi)置模塊,需要安裝
pip install requests
發(fā)送請求
用requests發(fā)送請求是非常容易的
首先引入requests模塊
>>> import requests
現(xiàn)在讓我們試著來獲取一個頁面。比如,我們來獲取github的公共時間軸
>>> r = requests.get('https://api.github.com/events')
現(xiàn)在我們有一個Response對象叫r
。我們可以從r
上面獲取任何信息籍胯。
像上面請求一樣,post請求
>>> r = requests.post('http://httpbin.org/post', data = {'key':'value'})
URL傳參
>>> payload = {'key1':'value1','key2':'value2'}
>>> r = requests.get('http://httpbin.org/get', params=payload)
可以通過r.url
看到url已經(jīng)被正確解析了
>>> print(r.url)
http://httpbin.org/get?key2=value2&key1=value1
響應(yīng)內(nèi)容
>>> import requests
>>> r = requests.get('https://api.github.com/events')
>>> r.text
u'[{"repository":{"open_issues":0,"url":"https://github.com/...
二進(jìn)制響應(yīng)內(nèi)容
可能你的響應(yīng)內(nèi)容是二進(jìn)內(nèi)容
>>> r.content
b'[{"repository":{"open_issues":0,"url":"https://github.com/...
如果你要創(chuàng)建一個圖片离福,你可以
>>> from PIL import Image
>>> from io import BytesIO
>>> i = Image.open(BytesIO(r.content))
JSON響應(yīng)內(nèi)容
>>> import requests
>>> r = requests.get('https://api.github.com/events')
>>> r.json()
[{u'repository': {u'open_issues': 0, u'url': 'https://github.com/...
原始數(shù)據(jù)響應(yīng)
pass
自定義請求頭
>>> url = 'https://api.github.com/some/endpoint'
>>> headers = {'user-agent': 'my-app/0.0.1'}
>>> r = requests.get(url, headers=headers)
響應(yīng)狀態(tài)碼
>>> r = requests.get('http://httpbin.org/get')
>>> r.status_code
200
響應(yīng)頭
>>> r.headers
{
'content-encoding': 'gzip',
'transfer-encoding': 'chunked',
'connection': 'close',
'server': 'nginx/1.0.4',
'x-runtime': '148ms',
'etag': '"e1ca502697e5c9317743dc078f67693f"',
'content-type': 'application/json'
}
Cookies
響應(yīng)中的Cookies
>>> url = 'http://example.com/some/cookie/setting/url'
>>> r = requests.get(url)
>>> r.cookies['example_cookie_name']
'example_cookie_value'
如果要發(fā)送Cookies
>>> url = 'http://httpbin.org/cookies'
>>> cookies = dict(cookies_are='working')
>>> r = requests.get(url, cookies=cookies)
>>> r.text
'{"cookies": {"cookies_are": "working"}}'
返回的cookies是 [
RequestsCookieJar](http://docs.python-requests.org/en/master/api/#requests.cookies.RequestsCookieJar "requests.cookies.RequestsCookieJar")
對象杖狼,有點(diǎn)類似于dict
,但是更全面給
>>> jar = requests.cookies.RequestsCookieJar()
>>> jar.set('tasty_cookie', 'yum', domain='httpbin.org', path='/cookies')
>>> jar.set('gross_cookie', 'blech', domain='httpbin.org', path='/elsewhere')
>>> url = 'http://httpbin.org/cookies'
>>> r = requests.get(url, cookies=jar)
>>> r.text
'{"cookies": {"tasty_cookie": "yum"}}'