python - 获取 Bing 的表单名称

标签 python python-2.7 mechanize bing

使用 Python 2.7.x 和 Mechanize,我试图获取 Bing 的表单名称并进行搜索:

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 的表单这在 bing.com 上不存在。但是,有一个具有该名称的输入字段。

你应该像这样使用它:

def bing_search(query):
    AGENT.open('http://www.bing.com/')
    AGENT.select_form(nr=0)
    AGENT.form['q'] = query
    data = AGENT.submit()

关于python - 获取 Bing 的表单名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44288650/

相关文章:

python - 如果 pymongo 中不存在,如何创建带索引的集合?

python - 测试Python代码的初学者,需要帮助!

python - CNN 输入中的 ValueError

python - 打开和读取文件

django - django queryset.values_list()中datetime字段到字符串的转换

ruby - "Unsupported content-encoding: gzip,gzip"使用 Mechanize 提交表单时

Ruby Mechanize https 错误

Python BeautifulSoup 看不到下拉列表选项值

ruby - 使用 Ruby Mechanize 下载文件

unit-testing - python模拟补丁: a method of instance is called?