的使用Python 2.7.x和机械化的形式名字,我试图让冰的形式,名称,做一个搜索:获取兵
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>
正如您所看到的表单名称已列出,但尝试任何列出的表单名称都不起作用并输出相同的问题,我在这里做了什么错误?
如果你看看你要加载页面的源代码(http://www.bing.com/search),你会看到自己,在那里没有名称为“q”的表单...有一个具有该名称的输入字段,因此您可以选择那个名称。 – errata
@errata BING常数指向'http:// www.bing.com' – user8049647
的确。然而,你的第一行错误表明你最终要求'GET http:// www.bing.com/search'。无论如何,即使在'bing.com'上也没有名称为“q”的表格。 – errata