我正试图使用StubHub API来搜集一些销售数据。这里看到的数据示例如下:
https://sell.stubhub.com/sellapi/event/4236070/section/null/seatmapdata
您会注意到,如果您尝试访问该网址而不登录stubhub.com,则无法使用。 You will need to login first
我通过网络浏览器登录后,打开要在新标签中抓取的网址,然后使用以下命令检索已删除的数据:
r = requests.get('https://sell.stubhub.com/sellapi/event/4236070/section/null/seatmapdata')
但是,一旦浏览器会话在十分钟后过期,我就会收到此错误:
<FormErrors>
<FormField>User Auth Check</FormField>
<ErrorMessage>
Either is not active or the session might have expired. Please login again.
</ErrorMessage>
我认为我需要通过cookie实现会话ID,以使我的身份验证保持良好状态。
对于之前从未做过这类事情的人来说,Requests库文档非常糟糕,所以我希望大家可以提供帮助。
请求提供的示例是:
s = requests.Session()
s.get('http://httpbin.org/cookies/set/sessioncookie/123456789')
r = s.get("http://httpbin.org/cookies")
print r.text
# '{"cookies": {"sessioncookie": "123456789"}}'
老实说,我无法做出正面或反面。如何在POST请求之间保留cookie?
答案 0 :(得分:51)
我不知道stubhub的api是如何工作的,但通常看起来应该是这样的:
s = requests.Session()
data = {"login":"my_login", "password":"my_password"}
url = "http://example.net/login"
r = s.post(url, data=data)
现在您的会话包含登录表单提供的cookie。要访问此会话的cookie,只需使用
s.cookies
任何其他请求的进一步操作都会有此cookie