【发布时间】:2017-08-13 14:54:59
【问题描述】:
我正在尝试自动化一些我必须定期在网站上做的事情。 首先我必须登录,我正在尝试使用 Mechanize:
from mechanize import Browser
br = Browser()
br.set_handle_robots(False)
br.open("http://leghe.fantagazzetta.com/")
#Seleziona il form di login di nome Form1
formcount=0
for frm in br.forms():
if str(frm.attrs["id"])=="Form1":
break
formcount=formcount+1
br.select_form(nr=formcount)
#imposta username e password
#br['username']='asdasd'
br.set_value('******',id="username")
br.set_value('******',id="password")
#submit
res = br.submit()
print res.read()
我注释掉了#br['username']='asdasd' 行,因为它引发了ControlNotFoundError;所以我选择了.set_value 方法(我不确定它是否有效,但它不会引发任何异常)。
问题是在br.submit() 之后页面保持不变。
如何获取更新的页面?
编辑 1:
我不知道这是否是我的本意;如果是这样,那么什么都没有改变。
import cookielib
import mechanize
br = mechanize.Browser()
#br.set_handle_robots(False)
#br.set_handle_redirect(True)
# Enable cookie support for urllib2
cookiejar = cookielib.LWPCookieJar()
br.set_cookiejar(cookiejar)
# Broser options
br.set_handle_equiv(True)
br.set_handle_redirect(True)
br.set_handle_referer(True)
br.set_handle_robots(False)
# Set refresh handle
br.set_handle_refresh(mechanize.HTTPRefererProcessor(), max_time=1)
headers = [('User-Agent', 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:36.0) Gecko/20100101 Firefox/36.0'),('Connection', 'keep-alive')]
br.open("http://leghe.fantagazzetta.com/")
#Seleziona il form di login di nome Form1
br.select_form(nr=1)
#imposta username e password
br.set_value('****',id="username")
br.set_value('****',id="password")
br.select_form(nr=0)
#submit
res = br.submit()
print res.read()
【问题讨论】:
-
在某些时候,如果您使用 mechanize 足够多,您将放弃它并切换到请求。这看起来是个好时机。