使用Mechanize提交表单(Python)

好吧,我正在尝试使用 Python登录网站并进行机械化.

我打开了网站:

site = br.open("http://example.com/login.PHP")

我有一个表单列表(使用br.forms).

<GET http://example.com/search.PHP application/x-www-form-urlencoded
<HiddenControl(search=1) (readonly)>
...
<POST http://example.com/login.PHP application/x-www-form-urlencoded
<TextControl(username=)>
<PasswordControl(password=)>
<CheckBoxControl(stay=[1])>
<SubmitControl(<None>=Log in) (readonly)>>

我一直在尝试提交用户名和密码字段.

我尝试这样做:

br.select_form(nr=0)
br.form["username"] = 'usernamehere'
br.form["password"] = 'passwordhere'
br.submit()

然后我意识到我试图填写的表单不是页面上的第一个,但更改0对任何事都没有帮助.如何在这样的页面上选择表单?

然而!这不是唯一的问题.

当我运行它时,我收到此错误

Traceback (most recent call last):
File "C:\Python26\login.py",line 34,in <module>
br.form["username"] = 'usernamehere'
...
ControlNotFoundError: no control matching name 'username'

我怎样才能解决这个问题? D:或者我完全错了吗?如果是后者,我该怎么做呢?

解决方法

要使用其名称选择表单,您应该使用:
br.select_form(name="order")

在这做什么:

br.form["username"] = 'usernamehere'

正在尝试为所选表单下的控件设置一个值,所以当他找不到它时,它会抛出你看到的异常.

相关文章

vue阻止冒泡事件 阻止点击事件的执行 &lt;div @click=&a...
尝试过使用网友说的API接口获取 找到的都是失效了 暂时就使用...
后台我拿的数据是这样的格式: [ {id:1 , parentId: 0, name:...
JAVA下载文件防重复点击,防止多次下载请求,Cookie方式快速简...
Mip是什么意思以及作用有哪些