のフォーム名を取得、私はビングのフォーム名を取得し、検索を実行しようとしている:は、Pythonの2.7.35とMechanizeのを使用しビング
import mechanize
AGENT = mechanize.Browser()
BING = "http://www.bing.com"
def bing_search(query):
AGENT.open(BING)
for form in AGENT.forms():
print form
AGENT.select_form(name="q")
AGENT.form["q"] = query
data = AGENT.submit()
これの出力は次のようになります。
C:\Users\z-perkins-thomas\Documents\bin\python\some-type-of-scanner>python querymine.py
<GET http://www.bing.com/search application/x-www-form-urlencoded
<TextControl(q=)>
<SubmitControl(go=) (readonly)>
<HiddenControl(qs=ds) (readonly)>
<HiddenControl(form=QBLH) (readonly)>>
Traceback (most recent call last):
File "querymine.py", line 4, in <module>
bing_search("test")
File "C:\Users\z-perkins-thomas\Documents\bin\python\some-type-of-scanner\bin\harvest\search_engines\__init__.py", line
55, in bing_search
AGENT.select_form(name="q")
File "C:\Python27\lib\site-packages\mechanize\_mechanize.py", line 524, in select_form
raise FormNotFoundError("no form matching "+description)
mechanize._mechanize.FormNotFoundError: no form matching name 'q'
C:\Users\z-perkins-thomas\Documents\bin\python\some-type-of-scanner>
フォーム名が一覧表示されていますが、リストされたフォーム名のいずれかを試しても問題が解決しない場合は、ここで何が間違っていますか?
:
あなたはこのようにそれを使用する必要がありますそこに名前 "q"のフォームがありません...その名前の入力フィールドがありますので、その名前を選択することができます。 – errata
@errata BING定数は、http:// www.bing.comに向かって指しています – user8049647
確かに。しかし、あなたの最初の行は、あなたが 'GET http:// www.bing.com/search'を要求してしまうことを示しています。とにかく、「bing.com」上でさえ、名前「q」を持つ書式はありません。 – errata