まず、requests
Python モジュール内でのセッションの使用に関連する高度なドキュメントを紹介します。
http://docs.python-requests.org/en/master/user/advanced/
sessions.post
また、リダイレクトの呼び出しでベース URL に移動すると、次のようになることにも気付きました。
https://www.searchiqs.com/NYALB/InvalidLogin.aspx?InvLogInCode=OldSession%2007/24/2016%2004:19:37%20AM
ナビゲートする URL を「ハッキング」しました。
https://www.searchiqs.com/NYALB/
...そして、そのページのリンクをクリックすると、 と のプロンプトを含むフォームが表示されることに注意してShow Login Fields
ください。何らかの認証を行っていないため、プログラムで検索を実行しようとすると失敗する可能性があります。完了して忘れている可能性のある以前の認証、またはいくつかの基準に基づいてこれを要求しないサーバー側のアクセス規則のいずれかによって、これへのアクセスが許可されているため、ブラウザーで機能する可能性があります。User ID
Password
これらのコマンドをローカル インタープリターで実行すると、サイトの所有者が認証の失敗を示すステータス コードをわざわざ返さなかったことがわかります。チェックすると、r.status_code
は 200 ですが、あなたr.text
のページになりInvalid Login
ます。私は ASP については知っていますが、HTTP ステータス コードは実際に何が起こったかを示しているはずだと推測しています。
これは実際には機能しないコードですが、サイトやセッションと対話する方法を示している可能性があります。
import requests
# Create dicts with our login and search data
login_params = {'btnGuestLogin': 'Log+In+as+GUEST'}
search_params = {'ctl00$ContentPlaceHolder1$txtName': 'Andrew'}
full_params = {'btnGuestLogin': 'Log+In+as+GUEST', 'ctl00$ContentPlaceHolder1$txtName': 'Andrew'}
# Create session and add login params
albany_session = requests.session()
albany_session.params = login_params
# Login and confirm login via searching for the 'ASP.NET_SessionId' cookie.
# Use the login page, not the search page first.
albany_session.post('https://www.searchiqs.com/NYALB/LogIn.aspx')
print(albany_session.cookies)
# Prepare a your search request
search_req = requests.Request('POST', 'https://www.searchiqs.com/NYALB/SearchAdvancedMP.aspx',data=search_params)
prepped_search_req = albany_session.prepare_request(search_req)
# Probably should work but does not seem to, for "reasons" unknown to me.
search_response = albany_session.send(prepped_search_req)
print(search_response.text)
別の方法として、Python バインディングを使用した Selenium ブラウザーの自動化を検討することをお勧めします。
http://selenium-python.readthedocs.io/