使用Python请求:会话,Cookie和POST

use*_*685 33 python session-cookies python-3.x python-requests

我试图使用StubHub API来削减一些销售数据.这里看到的数据示例如下:

https://sell.stubhub.com/sellapi/event/4236070/section/null/seatmapdata

您会注意到,如果您尝试在不登录stubhub.com的情况下访问该URL,则无法使用.您需要先登录.

我通过网络浏览器登录后,打开要在新标签中抓取的URL,然后使用以下命令检索已删除的数据:

r = requests.get('https://sell.stubhub.com/sellapi/event/4236070/section/null/seatmapdata')
Run Code Online (Sandbox Code Playgroud)

但是,一旦浏览器会话在十分钟后过期,我会收到此错误:

<FormErrors>
<FormField>User Auth Check</FormField>
<ErrorMessage>
Either is not active or the session might have expired. Please login again.
</ErrorMessage>
Run Code Online (Sandbox Code Playgroud)

我认为我需要通过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"}}'
Run Code Online (Sandbox Code Playgroud)

老实说,我无法做出正面或反面.如何在POST请求之间保留cookie?

Mic*_*hał 57

我不知道stubhub的api是如何工作的,但通常看起来应该是这样的:

s = requests.Session()
data = {"login":"my_login", "password":"my_password"}
url = "http://example.net/login"
r = s.post(url, data=data)
Run Code Online (Sandbox Code Playgroud)

现在您的会话包含登录表单提供的cookie.要访问此会话的cookie,只需使用

s.cookies
Run Code Online (Sandbox Code Playgroud)

任何进一步的操作,如其他请求将有此cookie