43

我正在尝试使用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')

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

<FormErrors>
<FormField>User Auth Check</FormField>
<ErrorMessage>
Either is not active or the session might have expired. Please login again.
</ErrorMessage>

我认为我需要通过 cookie 实现会话 ID 以保持我的身份验证有效。

Requests 库文档对于以前从未做过此类事情的人来说非常糟糕,所以我希望你们能够提供帮助。

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?

4

1 回答 1

75

我不知道 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

于 2013-04-03T18:15:02.297 回答