【发布时间】:2016-06-25 19:53:06
【问题描述】:
我正在尝试使用 mechanize 抓取需要我登录的网站。这是我的代码的开始。
#!/usr/bin/python
#scrape the admissions part of SAFE
import mechanize
import cookielib
from BeautifulSoup import BeautifulSoup
import html2text
# Browser
br = mechanize.Browser()
# Cookie Jar
cj = cookielib.LWPCookieJar()
br.set_cookiejar(cj)
# Browser options
br.set_handle_equiv(True)
br.set_handle_gzip(True)
br.set_handle_redirect(True)
br.set_handle_referer(True)
br.set_handle_robots(False)
br.set_handle_refresh(mechanize._http.HTTPRefreshProcessor(), max_time=1)
br.addheaders = [('User-agent', 'Chrome')]
# The site we will navigate into, handling it's session
br.open('https://url')
# View available forms
for f in br.forms():
print f
这给了我
<POST https://userstuff application/x-www-form-urlencoded
<HiddenControl(lt=LT-227363-Ja4QpRvdxrbQF0nb7XcR2jQDydH43s) (readonly)>
<HiddenControl(execution=e1s1) (readonly)>
<HiddenControl(_eventId=submit) (readonly)>
<TextControl(username=)>
<PasswordControl(password=)>
<SubmitButtonControl(submit=) (readonly)>
<CheckboxControl(warn=[on])>>
我现在如何输入用户名和密码?
我试过了
# Select the first (index zero) form
br.select_form(nr=0)
# User credentials
br.form['username'] = 'username'
br.form['password'] = 'password'
# Login
br.submit()
但这似乎不起作用。
【问题讨论】:
-
你试过
br.submit()吗? -
@PadraicCunningham 是的,对不起。我不小心错过了我的问题。
-
可以分享链接吗?
-
您能提供您要提交的表单的 html 吗?您需要确认表单输入名称实际上是
username和password -
表单 id 是
fm1stackoverflow.com/questions/10495313/…,您可以尝试使用它,以防您从中选择错误,如果这不起作用,那么还有其他事情发生并且没有看到实际链接很难说哪里出了问题