Python 2.7.5 を使用して Web サイトにログインしようとしています。このサイトにログインしてから、他のいくつかのページに移動して、それらのページからテーブルを抽出する必要があります。ただし、今のところ、私の問題はサイトにログインするだけです。ログインページは次のようになります。
<form action="/session" class="text" method="post"><div style="margin:0;padding:0;display:inline"><input name="authenticity_token" type="hidden" value="xeSbOkcWd444xhHyLj82wLS62qfH72De+7lwIhWFRd4=" /></div> <p>
<label for="login">Username</label><br />
<input id="login" name="login" type="text" /><br />
<label for="password">Password</label><br/>
<input id="password" name="password" type="password" />
<a href="/forgot_password">(Forgotten your password?)</a>
</p>
<p>
<input id="remember_me" name="remember_me" type="checkbox" value="1" />
<label class="shiftedlabel" for="remember_me">Remember me</label>
</p>
<p>
<br /><input name="commit" type="submit" value="Log in" />
</p>
</form>
この前の質問から取得した次のコードで、cookiejar、urllib、および urllib2 を使用しています。これを以下で少し変更しました。
import urllib, urllib2, cookielib
username = 'namehere'
password = 'passwordhere'
cj = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
login_data = urllib.urlencode({'Username' : username, 'password' : password, 'Remember_me' : "1", 'commit' : 'Log in'})
opener.open('http://example.org/login.php', login_data)
resp = opener.open('http://example.org/password_protected_page')
print resp.read()
元の「ログイン データ」に 2 つのフィールドを追加しました。覚えておいて送信してください。
このコードを実行すると、パス ワード ページが印刷されますが、このページを表示するにはログインする必要があるというエラーが表示され、必要なテーブルが表示されません。ウェブサイトのこのページには .php 拡張子が存在しないことに注意してください。
関連するメモとして、この種のものに対して私が見つけた他の最も一般的な解決策は、mechanize モジュールを使用することでした。しかし、それ自体をインストールするために使用する「簡単なインストーラー」ツールをインストールできませんでした。また、これにかなり慣れていないため、問題を診断できませんでした。それは別問題だけど。
助けてくれてありがとう:)