2

我发现了如何使用教程从谷歌搜索中检索主题的 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] 中的这个参数应该是什么?因为我在谷歌新闻上试过,结果很成功。有人可以帮我吗?

4

3 回答 3

7

它是页面源中给出的表单字段的 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,它是一个文本输入,也就是搜索文本。

于 2012-06-16T14:26:25.577 回答
0

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

例如,表单的名称 - 我正在输入的框的元素是“post-text”

于 2012-06-16T14:24:32.720 回答
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" 表示parameter在 br.form[ parameter]

于 2012-06-16T14:28:10.893 回答