Python Mechanize模块,选择表单内所有输入字段

2 投票
1 回答
2937 浏览
提问于 2025-04-17 05:10

我需要使用Mechanize这个工具,把一个特定的字符串放到选定表单中的每个可编辑输入框里。这里有一段HTML代码作为例子:

<form action = "http://localhost/whatever.php" method = "post">
<input type = "hidden" name = "dummy" value = "12345">
<input type = "text" name = "msg"> <br/>
<input type = "text" name = "name"> <br/>
<input type = "submit" value = "Send">
</form>

因为我不想每次在不同的网站上都重新写一遍Python脚本,这样会很麻烦,而且会变得很依赖特定的网站,所以我想让它能选择选定表单中所有可编辑的输入框(不包括隐藏的或禁用的字段),并把每个输入框的值设置为一个特定的字符串。不过,我并不知道每个输入框的名字。那么,有没有办法通过输入框的索引号来选择它呢?我现在的代码大概是这样的:

import mechanize
browser = mechanize.Browser()
url = raw_input("Enter web address: ")
browser.open(url)
browser.select_form(nr=0)
# I know the index number of the form or my Python code will find out which it is
# but I do not know the names of the input elements within this form

在这个时候,我想做的事情是:先弄清楚有多少个可编辑的输入框,然后通过索引号选择每一个,并把它们的值设置好。这样可以做到吗?我只需要一种自动化的方法来选择输入框并设置它们的值,而不需要知道它们的名字或ID。能不能通过索引号来选择,比如这样:

browser.input_elements[1] = "whatever"

那么在Mechanize中,有没有一个包含输入元素和它们值的列表或序列,这样我就可以编辑它们了?

1 个回答

1

这里发现了一些可能有用的东西:

http://stockrt.github.com/p/emulating-a-browser-in-python-with-mechanize/

# Select the first (index zero) form
br.select_form(nr=0)

撰写回答