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

标签 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] 中的这个参数应该是什么?因为我在 Google News 上试过了,结果很成功。有人能帮帮我吗?

最佳答案

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

关于python - Mechanize (将输入设置为表单),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11064122/

相关文章:

python - django 模板语法遍历两个列表

python - SymPy 是否正确求解此 ODE?

python - 如何在 matplotlib x 轴上显示日期而不是序列号

html - 使用 ids 而不是 name 属性来标识表单中的字段有什么隐藏的原因吗?

javascript - javascript中的c()函数是什么意思?

python - 为什么http请求卡在我的python脚本中?

perl - 使用 Perl 文件处理的 CSV 中的西类牙语字符

python - 导入错误 : No module named '_version' when importing mechanize

python - 使用 MyPy 作为库获取 Python 表达式中的类型

javascript - 使用 jQuery 在表单提交上将隐藏输入值设置为 dataURL