はmechanizeライブラリを使用して、より良い方法です。
import mechanize
b = mechanize.Browser()
b.set_proxies({'http': 'yourproxy.corporation.com:3128' })
b.addheaders = [('User-agent', 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)')]
b.open("http://energywatch.natgrid.co.uk/EDP-PublicUI/Public/InstantaneousFlowsIntoNTS.aspx")
b.select_form(name="form1")
b.form.find_control(name='__EVENTTARGET').readonly = False
b.form['__EVENTTARGET'] = 'a1'
print b.submit().read()
あなたはそのMechanizeのを指定することができますどのように注(無地urllib
を使用しても可能)プロキシサーバーを使用する必要があります。また、ASP.NETのJavaScriptポストバックがどのようにシミュレートされているかに注意してください。
編集:プロキシサーバーがNTLM認証を使用している場合
は、それが問題になる可能性があります。 AFAIK urllib2はNTLM認証を処理しません。 NTLM Authorization Proxy Serverを試すことができます。 readme fileから:
「NTLM Authorization Proxy Server」とは何ですか?
「NTLM認証プロキシサーバーは、」MSプロキシサーバーでとウェブサーバであなたに を認可するプロキシのようなソフトウェア、(ISS特に)であるMS独自のNTLM 認証方式を使用して、それはあなたのクライアントの中にいくつかの値を変更することができます要求ヘッダー が含まれているため、これらの要求はMS IEによって作成されたものと同じように見えます。これはPython 言語で書かれています。 www.python.orgを参照してください。
は、私が試したb.set_proxiesを使用して({ 'のhttp': 'ユーザー:パス@のPROXYSERVER:80'})、その私のset_proxies文字列としてではなく、このエラーを取得: HTTPエラー407:プロキシ認証が必要 これは、これを回避する方法としてCOM + IEを使用した理由です。 この問題を回避するにはどうすればよいでしょうか。あなたの助けをありがとう – Brendan
あなたのプロキシサーバーがNTLM認証を使用している場合、それは問題の可能性があります。私は、NTLM認証プロキシサーバーを使用するように私の答えを更新しました。 NTLMと基本認証の間の変換が行われます。私はトランクのバージョンをダウンロードし、Python 2.5でテストしました。機能するプロキシテスト用にNTLMを使用できるIASプロキシサーバーはありません。 – codeape