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

时间:2012-06-16 14:08:19

标签: python forms mechanize mechanize-python

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

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

我知道它直到这个它检索表格。然后它被赋予了

br.form['q'] = 'search topic'
br.submit()
br.response.read()

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

3 个答案:

答案 0 :(得分:6)

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

您可以获取可用的ID值,如下所示:

import mechanize

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

for f in br.forms():
    print f

给了我:

<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)>>

说:

  1. 页面上只有一个表格

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

  3. 唯一不隐藏的字段ID是q,它是一个文本输入,即搜索文本。

答案 1 :(得分:0)

参数应该是您填充字符串的表单元素的名称。 您可以使用诸如firebug之类的东西找到最简单的名称来检查网页(对于firefox,使用您可用于浏览器的任何内容)。 您也可以尝试查看页面的来源,但是当页面很复杂时,这很乏味。

E.g。表单的名称 - 我输入的框中的元素是“post-text”

答案 2 :(得分:0)

查看http://www.google.co.in资源,它有以下代码:

<input class="lst lst-tbb" value="" title="Google 搜索" size="41" type="text" 
                       autocomplete="off" id="lst-ib" name="q" maxlength="2048"/> 

name =“q”表示br.form [parameter]

中的parameter