表单提交python

2024-04-19 18:13:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试自动化一些我必须定期在网站上做的事情。 首先,我必须登录并尝试使用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()

Tags: brimportformidtruevalueusernameres