Python机械化 - 表单提交 - 选择正确的表单

时间:2013-04-01 07:01:05

标签: python web-scraping mechanize

尝试使用Python机制来登录网页。由于我在查找正确的表单时遇到问题,而不是发布URL(代码可能会更改),我将在此处复制一些代码供将来的用户使用。我读过this,但似乎没有明确的答案。

无论如何,我在this tutorial进行了机械化处理,直到我获得表格。

我打电话的时候:

for form in br.forms():
    print form

我回来了:

POST https://www.myexample.com/x-www-form-urlencoded
HiddenControl(utf8=✓) (readonly)
HiddenControl(authenticity_token=BfqPL1ilOXeg08Or/CEBAiK4duWgncY=      
CheckboxControl(affiliate[remember_me]=[1])

查看我看到的原始HTML:

<label for="affiliate_email">Email<./label>
<.input autofocus="autofocus" id="affiliate_email" 
    name="affiliate[email]" size="30" type="email" />

但是,当我尝试选择电子邮件字段时,我收到一个表单未找到错误。

br.select_form(name="affiliate[email]")
# updated to 
br.select_form(nr=0)
# Now what do I do here to enter something into that form?
br.form['someIDhere']='myEmail@example.com'

我也尝试过使用表单ID和许多其他可能的表单名称。我不明白为什么用br.forms()打印表单会返回那些奇怪的结果,这是否意味着该网站使用javascript登录表单?

提前谢谢!

1 个答案:

答案 0 :(得分:0)

affiliate[email]不是表单的名称,而是表单中的输入。 尝试使用:

br.select_form(nr=0)

如果表单没有名称,并且是页面上的第一个/唯一表单。