如何在Python ClientForm中设置不存在的字段?

5 投票
1 回答
2293 浏览
提问于 2025-04-15 14:59

我正在用 mechanize(它使用 clientform)在 Python 中进行一些网页爬虫,因为它不支持 JavaScript,所以我想在一个表单中设置一个不存在的输入框的值(这个输入框是由 JavaScript 生成的)。我该怎么做呢?

这个错误和你尝试执行下面的代码时遇到的错误类似:

from mechanize import Browser
br = Browser()
page = br.open('http://google.com')
br.select_form(nr = 0)
br['unexistent'] = 'hello'

1 个回答

17

你首先需要把控件添加到表单里,然后再去fixup这个表单。

br.form.new_control('text','unexistent',{'value':''})
br.form.fixup()
br['unexistent'] = 'hello'

这个过程其实没有很详细的说明,在源代码里的fixup()函数下面有个注释:

This method should only be called once, after all controls have been
added to the form.

不过,看起来这个操作并不会做什么太危险的事情。建议你至少先添加控件,再去调整表单里的其他内容。

撰写回答