嗯,我正在尝试使用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:还是我做得完全错了?如果是后者,我该怎么做呢?
发布于 2011-12-20 12:58:05
要使用表单的名称选择表单,应使用:
br.select_form(name="order")您在这里做的事情:
br.form["username"] = 'usernamehere'正在尝试为所选窗体下的控件设置值,因此当他找不到该值时,它会抛出您看到的异常。
发布于 2011-12-20 12:53:33
你可能会有几个问题
selenium --你可以试着看看页面的html源代码--如果你没有纯HTML格式的表单,很明显它是由javascript插入DOM的。此外,如果表单是通过javascript提交的,则mechanize也不会帮助您重定向的重定向
https://stackoverflow.com/questions/8570920
复制相似问题