使用Python和Mechanize登录网站

时间:2015-06-04 22:53:39

标签: python web-scraping mechanize

我尝试使用Mechanize登录portfolio123.com。出于某种原因,我没有得到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

但是当我在浏览器中打开网址时,密码字段就是。那么我该怎么做呢?

1 个答案:

答案 0 :(得分:1)

目前尚不清楚为什么Mechanize没有看到LoginPassword字段。我尝试过多种方法:设置User-Agent,尝试prettifying the response with BeautifulSoup考虑​​HTML解析问题,尝试动态修改密码输入属性等。

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

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)