使用Mechanize进入表单

时间:2013-05-15 23:23:28

标签: python forms mechanize form-submit

我正在编写一个较大程序的较小部分,该程序使用机械化将YouTube网址输入表单但我无法使其工作

我正在使用页面nr=0上的第一个表单,但我没有放在br[]属性框中的内容,因为我没有表单的名称只是id

这是我的代码:

import mechanize

url = "Youtube to Mp3 URL"
br = mechanize.Browser()
br.set_handle_robots(False)
br.open(url)
br.select_form(nr=0)
br[?] = "Youtube Video URL" #What goes in the []?
res = br.submit()
content = res.read()
print content

我确定这是一个愚蠢的问题,但其他问题都没有帮助我

谢谢!

1 个答案:

答案 0 :(得分:1)

我测试了以下内容并且有效:

br.select_form(nr=0)
for field_name in br.form.controls:
    print field_name

将为您提供您需要填写的字段名称的线索,它将在以下括号中:

<HiddenControl(submit_hidden=submit_hidden) (readonly)>
<TextControl(user_name=)>
<PasswordControl(user_password=)>
<SubmitControl(submit=Login) (readonly)>

在这种情况下,字段为 user_name user_password

这对我有用,但正如我告诉你的下载链接是Javascript而机械化不支持它,你需要像WATIR那样的红宝石。

   browser.select_form(nr=0)

   for field in browser.form.controls:
       field._value = "http://www.youtube.com/watch?v=ARz8ddGIZIA"
       break

   browser.submit()
   response = browser.response().read()