web-dev-qa-db-ja.com

Pythonリクエスト:セッション、Cookie、およびPOST

StubHub API を使用して、販売データをスクレイピングしようとしています。ここに見られるこのデータの例:

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

Stubhub.comにログインせずにそのURLにアクセスしようとすると、機能しません。 最初にログインする必要があります

Webブラウザーからサインインしたら、スクレイピングするURLを新しいタブで開き、次のコマンドを使用してスクレイピングされたデータを取得します。

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

ただし、10分後にブラウザーセッションが期限切れになると、次のエラーが表示されます。

<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を保持するにはどうすればよいですか?

31
user2238685

スタブハブの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があります

54
Michał