前駆者: 昨日、ここで似たような質問をしました。その質問を編集しない理由は、この 2 つは似ていますが、こちらの方がはるかに高度だからです。
私のプロジェクト: Python を使用して、安全な Web サイトにログオンし、そのセッション内のいくつかのページに移動して、それらのページからテキストをファイルに抽出したいと考えています。
詳細: これは、私が収集したすべての情報/私が書いたコードです。
セキュリティで保護されたサイトのログオン ページの注目すべき部分を次に示します。
<form action="index.asp" method="post" name="form">
<input type="text" id="user" name="user"">
<input type="password" name="password">
<input type="hidden" name="logon" value="username">
<input type="submit" name="submit" value="Log In" class="button">
</form>
ページには Cookie をチェックする JavaScript コードもあるので、cookielib.CookieJar()
.
大きな編集
次のモジュールをインポートしています: urllib
、urllib2
、cookielib
およびnltk
。
次のコードを生成するには:
cookiejar = cookielib.CookieJar()
# Notice I set 'debug' to 'true'.
debug = True
handlers = [
urllib2.HTTPHandler(debuglevel=debug),
urllib2.HTTPSHandler(debuglevel=debug),
urllib2.HTTPCookieProcessor(cookiejar),
]
opener = urllib2.build_opener(*handlers)
# These headers I copied directly from Chrome's Developer Tools
opener.addheaders = [
("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"),
("Accept-Encoding", "gzip,deflate,sdch"),
("Accept-Language", "en-US,en;q=0.8"),
("Cache-Control", "max-age=0"),
("Connection", "keep-alive"),
("Content-Type", "application/x-www-form-urlencoded"),
("Host", "www.myebill.com"),
("Origin", "https://www.myebill.com"),
("Referer", "https://www.myebill.com/index.asp?startnam"),
("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.95 Safari/537.36")
]
urllib2.install_opener(opener)
# Passing the form data as a URL-encoded string
payload = "user=<User>&password=<Password>&logon=username&submit=Log+In"
req = urllib2.Request("https://www.myebill.com/index.asp", data=payload)
cookiejar.add_cookie_header(req)
page = urllib2.urlopen(req)
pdata = page.read()
print( nltk.clean_html( pdata ) )
注: デバッグ出力の投稿を希望される場合は、お問い合わせください。:)
私の問題: コードを実行した後も、「セッションがタイムアウトしたか、正しくログオンしていません」というメッセージが表示されます。メッセージ。
助けてください?どんな提案やコードをいただければ幸いです。
また、答えが見つかったら、参照としてこれが必要な人に、完全なコードを編集として投稿することを約束します! (もちろん、ログオン情報は省略します..)