2017-03-04 55 views
0

こんにちはログインが必要なウェブサイトから情報を取得しようとしています。Pythonでリクエストを使用してCookieを設定するにはどうすればよいですか?

私はすでにID、パスワード、リクエストをPOSTする必要があるreqeustURLで200応答を取得しています。

ヘッダーには、クロム開発者ネットワークのタップで見ることができるrequests_headersがあります。フォームデータ辞書はIDとパスワードを持っています。

login_site = requests.post(requestUrl, headers=headers, data=form_data) 
status_code = login_site.status_code print(status_code) 

私は以下のコードは、私が試した方法である200

を得ました。

1.セッション。

セッションでCookieを設定しようとすると、失敗しました。私はログインが必要な他のページを擦ってセッションがクッキーを設定できると聞いたことがあります。

session = requests.Session() 
session.post(requestUrl, headers=headers, data=form_data) 
test = session.get('~~') #the website that I want to scrape 
print(test.status_code) 
は、私は403

2.私は手動で私が取得することができますクッキーの辞書を作っ

手動で設定されたCookieを得た

cookies = {'wcs_bt':'...','_production_session_id':'...'} 
r = requests.post('http://engoo.co.kr/dashboard', cookies = cookies) 
print(r.status_code) 

私も持っています403

実際には、私はクッキーdictに何を書き込むべきか分かりません。私が得るとき、'wcs_bt = AAA; _production_session_id = BBB; _ga = CCC; '、私はdict {'wcs_bt': 'AAA' ..}に変更する必要がありますか?私はこのコードで

login_site = requests.post(requestUrl, headers=headers, data=form_data) 
print(login_site.cookies) 

クッキーを取得すると は、私だけ RequestsCookieJar [クッキー_production_session_id = BBB]どういうわけか

を得ることができ、私もそれに失敗しました。

どのように私はクッキーでそれを擦ることができますか?

+0

ログイン後、実際にはCookieの設定を担当する別のページにリダイレクトされる可能性があり、そのスクリプトは決してそのページに当たらない可能性があります。あなたのユーザエージェントがPython/Requestsに設定されているため、彼らがあなたをブロックしている可能性もあります。あなたがスクレイプしようとしているサイトについての詳しい情報がなくても、それ以上の情報を与えることは不可能ですが、記録のためには必ずリクエストを使用してください。 –

+0

ご意見ありがとうございます。クッキーの設定を担当する実際のページを知るにはどうすればいいですか?私が掻きたいウェブサイトは「https://engoo.co.kr/」でした。 – dizwe

答えて

0

ログインが必要な現代(2017年頃以降)のWebサイトをスクレイピングすることは、ログインプロセスの重要な部分がJavascriptで実装されている可能性が高いため、非常に難しい場合があります。

ブラウザと同じようにJavascriptを実行しない限り、ログインを完了することはできません。残念ながら、基本的なPythonライブラリは役に立ちません。

Selenium with Pythonは、Webサイトのテストに使用されますが、Webサイトとのやりとりを自動化するために使用できます。

関連する問題