我試圖使用python的請求模塊從POST
請求中獲取Location
值。但是,當我查看響應的標題時,我沒有看到任何這樣的密鑰。使用Google Chrome瀏覽器執行相同的請求確實會顯示密鑰。從響應頭獲取位置
這是我嘗試下載數據的地方:https://data.police.uk/data 。在谷歌瀏覽器中啓動並打開開發者工具。當你選擇一個日期範圍,選擇一些強制並點擊Generate File
,你可以看到一個POST
請求正在使用Response頭中的Location
鍵。
import requests
from urlparse import urlparse, urljoin
BASE = 'https://data.police.uk'
FORM_PATH = 'data'
form_url = urljoin(BASE, FORM_PATH)
# Get data download URL
client = requests.session()
try:
client.get(form_url)
except requests.exceptions.ConnectionError as e:
print (e)
sys.exit()
csrftoken = client.cookies.values()
l = [('forces', 'cleveland')]
t = ('csrfmiddlewaretoken', csrftoken[0])
d_from = ('date_from', '2014-05')
d_to = ('date_to', '2016-05')
l.extend((t, d_from, d_to))
r = client.post(form_url, headers=dict(Referer=form_url), data=l)
查詢響應頭給我:
In [4]: r.headers
Out[4]: {'Content-Length': '4332', 'Content-Language': 'en-gb', 'Content-Encoding': 'gzip', 'Set-Cookie': 'csrftoken=aGQ7kO4tQ2cPD0Fp2svxxYBRe4rAk0kw; expires=Thu, 03-Aug-2017 22:11:44 GMT; Max-Age=31449600; Path=/', 'Vary': 'Cookie, Accept-Language', 'Server': 'nginx', 'Connection': 'keep-alive', 'Date': 'Thu, 04 Aug 2016 22:11:44 GMT', 'Content-Type': 'text/html; charset=utf-8'}
問:我如何與響應報頭的Location
關鍵?
編輯
答:必須指定l.append(['include_crime', 'on'])
。在此之後工作。
你是否檢查了響應的主體?它通常包含所請求的數據。 – trans1st0r
@ trans1st0r:我將如何從請求數據的正文獲取響應標頭? – armundle
嘗試從這裏的一些命令:http://docs.python-requests.org/en/master/user/quickstart/#response-content – trans1st0r