0

私は、アカウントを持っているColloquy.comサイトから情報を得るためにウェブスクレーパーを作ろうとしています。私はスクレーパーがサイトにログインするのに困っている。私はBeautifulSoupとRequestsでPython 2.7を使用しています。このウェブスクレイパーが正しくログインできない理由を教えてください。

Here is a screenshot of my code

and here is a screenshot of the relevant HTML for the login

私は、ログイン情報の認証キーを追加することを含め、このコードのいくつかのバリエーションを、試してみました。しかし、私が何を試しても、私はいつもHTMLを入手するとサイトの「ログインしていないバージョン」を取得します。

私はこのサイトがログイン用のJavascriptを使用している(これは別のログインページの代わりにポップアップボックスを使用しています)という疑いがあります。しかし、これを適切に処理するにはJavascriptについて十分に分かっていないし、この特定の問題を照らすガイドを見つけることができなかった。

誰かが私のコードやプロセスに間違っていることを教えてくれたり、Javascriptを使ってログインを処理する方法を教えてください。

ありがとうございます! :)

+1

あなたは 'result.cookies'の結果を投稿できますか? – noteness

+0

result.cookiesは私に adaaaam

答えて

3

javacriptがあるログインページを削る代わりに、postの情報がhttps://colloquy.com/app/account/loginに表示されるので、次のようにログインしてログインできます。

import requests 
resp = requests.post("https://colloquy.com/app/account/login", data={"email":"[email protected]","password":"Password"}) 

あなたは、あなたがに取得したいされているページをこすりするresp.cookiesを使用することができます。

cookies = resp.cookies 
r = requests.get("https://colloquy.com/some-page", cookies=cookies) 
# Get html etc 

編集: 通常loginページの場合には、ログインするために必要な情報をお送りします舞台裏ポストアクションがあるでしょう。通常usernamepasswordなどです。これは通常Developer ToolsまたはFirefox(Developer ToolsまたはFirebug)を使用してChromeで見つけることができます。情報を掲載する場所を得るために、私はツールを起動し、ログインプロンプトを完了します。 [ネットワーク]タブ(Chrome - Firefox/Firebugの場合は異なる場合があります)では、通常、ログインプロンプト/ページを完了して情報を送信した後、一部のページ(通常はログインなど)にリクエストが表示されます。この操作をクリックすると、Request UrlRequest Methodを含むこのリクエストの情報の一部が表示されます。 Request Urlに投稿されたForm Dataの領域もあります。この情報を使用して、Form DataRequest Urlに類似するPOSTを作成することができます。

注:あり、ウェブ開発者が離れて自動化されたスクリプトおよび/またはボットを維持するために、特定のUser-agentsを阻止しようとするかもしれ例がありますが、あなたは通常、ちょうどこの制限を回避するために、通常のエージェントにuser-agentを変更することができます。

requests.post(url, headers={"user-agent":"Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36"}) 
+0

を与えてくれました。明確で役立つ回答に感謝します。 – adaaaam

+0

問題はない、うまくいきました。 –

+0

ログイン情報をどこに投稿したのかを説明してもらえますか?私はまだどこでも見ていない。 – adaaaam

関連する問題