1. 程式人生 > >Python爬蟲之requests庫(五):Cookie、超時、重定向和請求歷史

Python爬蟲之requests庫(五):Cookie、超時、重定向和請求歷史

import requests

一、Cookie

獲取伺服器響應中的cookie資訊

url = 'http://example.com/some/cookie/setting/url'
r = requests.get(url)
r.cookies['example_cookie_name']

使用引數cookies,傳送cookie到伺服器

url = 'http://httpbin.org/cookies'
cookies = dict(cookies_are='working')
r = requests.get(url, cookies=cookies)
r.text
'{"cookies":{"cookies_are":"working"}}\n'

cookie的返回物件其實是RequestsCookieJar,它與字典型別,可以直接將RequestsCookieJar傳遞給Requests

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)

二、超時

通過設定引數timeout,決定停止等待響應的時間

requests.get('http://github.com', timeout=60)
<Response [200]>

三、重定向和請求歷史

  • 通常requests會自動處理重定向
  • 通過.history可以追蹤重定向的過程
  • github會將http請求重定向到https
r = requests.get('http://github.com')
print(r.url)
print(r.status_code)
print(r.history)
https://github.com/
200
[<Response [301]>]
  • 通過引數allow_redirects禁用重定向
r = requests.get('http://github.com', allow_redirects=False)
print(r.status_code)
print(r.history)
301
[]