Web サイト (http://www.proxy-listen.de/Proxy/Proxyliste.html) のフォームのコントロール情報を取得しようとしています。(実際には、フォームに入力して送信し、プロキシ サーバーのリストを取得したいと考えています)。このコードを使用してフォーム要素を読み上げています。
for control in br.form.controls:
if not control.name:
print " - (type) =", (control.type)
continue
print " - (name, type, value) =", (control.name, control.type, br[control.name])
何らかの理由で、mechanize はラジオ ボタン (つまり、ソースコードから見つけた「type」と「liststyle」) を一覧表示しないため、フォームを送信すると不思議なことにメインページ (http://www. proxy-listen.de)。ここに私の完全なコードがあります:
#!/usr/bin/env python
#-*- coding: utf-8 -*-
import mechanize
br = mechanize.Browser()
br.addheaders = [("Content-type", "text/html, charset=utf-8")]
br.addheaders = [('User-agent', 'Mozilla/5.0 (Windows NT 5.2; WOW64) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.47 Safari/536.11')]
br.set_handle_robots(False)
url = 'http://www.proxy-listen.de/Proxy/Proxyliste.html'
br.open(url)
response1 = br.response()
print response1
## Show me the forms of the website!
for form in br.forms():
print form
## Select form Nr 0, as this is the one and only form I am looking for
br.select_form(nr=0)
br.form.set_all_readonly(False)
## Fill the form
br.form['filter_country'] = ['DE']
br.form['filter_http_anon'] = ['3']
br.form['filter_http_gateway'] = ['']
br.form['filter_port'] = ['']
br.form['filter_response_time_http'] = ['1']
br.form['filter_timeouts1'] = ['10']
br.form['proxies'] = ['300']
## I already tried adding two radio buttons manually, but even this doesnt help!
'''
br.form.new_control('radio','liststyle',{'value': ['info', 'leech']})
br.form.new_control('radio','type',{'value':['http', 'https', 'socks4', 'socks5']})
br.form.fixup()
br.form['liststyle'] = ['leech']
br.form['type'] = ['http']
'''
## just to double-check the values, loop through controls!
for control in br.form.controls:
if not control.name:
print " - (type) =", (control.type)
continue
print " - (name, type, value) =", (control.name, control.type, br[control.name])
resp2 = br.submit()
page = resp2.read()
print page
firebug を使用して POST リクエストで送信される変数を既に確認しましたが、ラジオ ボタンは驚くほど POST リクエストの一部ではありません。
どんなポインタでも大歓迎です!どうもありがとうございました。