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

时间:2011-10-28 05:51:31

标签: python forms mechanize

我需要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 个答案:

答案 0 :(得分:1)

找到可能有用的东西:

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

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