我正在尝试登录运输门户网站,我需要从其中一个内页中获取一些详细信息。我使用了下面的脚本。
import mechanize
username = 'namehere' # your username/email
password = 'password here' # your password
br = mechanize.Browser()
# browser settings (used to emulate a browser)
br.set_handle_equiv(True)
br.set_handle_redirect(True)
br.set_handle_referer(True)
br.set_handle_robots(False)
br.set_debug_http(False)
br.set_debug_responses(False)
br.set_debug_redirects(False)
br.set_handle_refresh(mechanize._http.HTTPRefreshProcessor(), max_time = 1)
br.addheaders = [('User-agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1')]
br.open('http://tracking.parcelforce.net') # open parcelforce
#List the forms
#for form in br.forms():
#print "Form name:", form.name
#print form
br.select_form(name="SNP_SCM_login")
br.form[ "LOGIN_FORM" ] = username
br.form[ "PASSWORD_FORM" ] = password
br.submit() # submit the login data
print(br.response().read()) # print the response
我返回的输出没有找到任何形式。如果有人可以提供帮助,将不胜感激。
最佳答案
问题是,您点击的页面仅由 JS 填充,并且没有创建可供您选择的对象。 Mechanize 需要一个对象来访问表单,但是在 br.open() 上找不到表单
你可以自己检查一下:
request = br.open('http://tracking.parcelforce.net') # open parcelforce
print request.read()
而且你已经有了这个,它不返回任何形式:
for form in br.forms():
print "Form name:", form.name
print form
我尝试通过以下方式选择表单:
br.select_form(nr=0)
应该选择第一个表单,但没有找到表单。不幸的是,您最好的选择是不要使用 Mechanize 。
试试 Watir (Ruby) 或者简单地使用 Selenium 并在那里使用报废。
关于python-2.7 - Python Mechanize 登录网站未找到表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31248233/