我正在尝试登录运送门户网站,我需要从其中一个内页中删除一些细节。我使用下面的脚本。
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
我回来的输出没有找到任何形式。如果有人可以提供帮助,将会感激不尽。
答案 0 :(得分:1)
问题是,您点击的页面仅由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)
应该选择第一个表单,但没有找到表单。不幸的是,最好的办法就是不要机械化。
尝试Watir(Ruby)或者只是去Selenium并使用报废。
答案 1 :(得分:0)
我已经重新审视了这个并解决了问题我已经使用PHP脚本来使用CURL并使用来自缓存会话的登录数据来通过登录屏幕。