使用Python和Mechanize登录到网站

使用Python和Mechanize登录到网站,python,web-scraping,mechanize,Python,Web Scraping,Mechanize,我正在尝试使用Mechanize登录。由于某些原因,我没有得到LoginPassword字段 以下是迄今为止的代码: import mechanize br = mechanize.Browser() br.select_form(nr=0) br['LoginUsername'] = user_name br['LoginPassword'] = password # This line does not work yet. 最后一行行不通。找不到该控件。我们可以通过运行以下代码来确认

我正在尝试使用Mechanize登录。由于某些原因,我没有得到LoginPassword字段

以下是迄今为止的代码:

import mechanize

br = mechanize.Browser()
br.select_form(nr=0)
br['LoginUsername'] = user_name 
br['LoginPassword'] = password # This line does not work yet. 
最后一行行不通。找不到该控件。我们可以通过运行以下代码来确认这一点:

br.form = list(br.forms())[0]
for control in br.form.controls:
    print "type=%s, name=%s value=%s" % (control.type, control.name, br[control.name])
返回:

type=text, name=LoginUsername value=xxxxx
type=submit, name=Login value=Login
type=hidden, name=url value=index.jsp

但是当我在浏览器中打开url时,pasword字段就在那里。那么我该怎么做呢?

不太清楚为什么
Mechanize
没有看到
LoginPassword
字段。我尝试了多种方法:设置
用户代理
,尝试思考HTML解析问题,尝试动态修改密码输入属性等

作为一种解决方法,您可以毫无问题地处理登录表单:

import robobrowser

url = "https://www.portfolio123.com/login.jsp"
browser = robobrowser.RoboBrowser()
browser.open(url)

form = browser.get_form()
form['LoginUsername'] = 'Username'
form['LoginPassword'] = 'Password'
browser.submit_form(form)

有关于RoboBrowser的文件吗?登录后有许多任务要做,例如提交其他表单、执行JavaScript、下载Excel表格等。我很难处理这些任务。如何使用RoboBrowser单击此按钮:
?我没有在文档中找到它。我猜我需要执行JavaScript(这是否可能从RoboBrowser内部实现?)或者复制JS发送的POST请求。我更喜欢JS,因为这不太可能导致故障,但RoboBrowser似乎无法处理它。因此,我做了以下操作:
response=browser.session.post(“https://www.portfolio123.com/portf_rebalance.jsp“,data=params)
我猜它是通过RoboBrowser获得请求库的。POST字段(在这种特殊情况下)可能会随之更改,并且库函数没有文档记录。有JS方法可以做到这一点吗?@ChaimG据我所知,您需要一种高级方法,而不必深入到服务器请求的形成方式、发送哪些参数等。在这种情况下,您应该使用
selenium
来研究浏览器自动化。如果您需要此方法的帮助,请告诉我。