python - mechanize(将输入设置为表单)

Man*_*noj 2 python forms mechanize mechanize-python

我发现如何使用教程从谷歌搜索中检索主题的html页面.这在教程中给出.

import mechanize
br = mechanize.Browser()
br.open('http://www.google.co.in')
br.select_form(nr = 0)
Run Code Online (Sandbox Code Playgroud)

直到这一点我理解它才能找回这个表格.然后就是这样

br.form['q'] = 'search topic'
br.submit()
br.response.read()
Run Code Online (Sandbox Code Playgroud)

这会输出与搜索主题相关的页面的html.但我怀疑br.form [parameter]中的这个参数应该是什么?因为我尝试了谷歌新闻,它取得了成功的结果.有人可以帮助我吗?

Hug*_*ell 6

它是表单字段的id,如页面源中所示.

您可以像这样获取可用的id值:

import mechanize

br = mechanize.Browser()
br.open("http://www.google.com/")

for f in br.forms():
    print f
Run Code Online (Sandbox Code Playgroud)

这给了我:

<f GET http://www.google.ca/search application/x-www-form-urlencoded
  <HiddenControl(ie=ISO-8859-1) (readonly)>
  <HiddenControl(hl=en) (readonly)>
  <HiddenControl(source=hp) (readonly)>
  <TextControl(q=)>
  <SubmitControl(btnG=Google Search) (readonly)>
  <SubmitControl(btnI=I'm Feeling Lucky) (readonly)>
  <HiddenControl(gbv=1) (readonly)>>
Run Code Online (Sandbox Code Playgroud)

这说:

  1. 页面上只有一个表单

  2. 隐藏字段id是ie(页面编码),hl(语言代码),hp(?不知道)和gbv(也不知道).

  3. 唯一的非隐藏字段id是q,它是文本输入,即搜索文本.