【问题标题】:Form submitting python表单提交python
【发布时间】: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 足够多,您将放弃它并切换到请求。这看起来是个好时机。

标签: python mechanize


【解决方案1】:

Mechanize 提供了在提交表单后重定向页面的选项。 您可以在提交表单之前尝试使用以下代码:

br.set_handle_redirect(True)

【讨论】:

  • 它不起作用。我注意到输入字段所在的表单位于另一个定义了方法和操作的表单中。我尝试选择父表单,但找不到控件,我尝试填写子表单,然后选择父表单并提交,但我仍然得到相同的页面。
  • 好的,我先看看网站。
  • 你可以试试下面的网址吗? leghe.fantagazzetta.com/#login-modal
  • 在 .open() 上:BrowserStateError:无法获取相对引用:未查看任何文档
  • 其实我看不懂页面的语言。但您也可以尝试: # 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) # 设置刷新句柄 br.set_handle_refresh(mechanize.HTTPRefererProcessor(), max_time=1) and .braddheaders = headers
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-19
  • 2014-04-12
  • 2012-01-24
相关资源
最近更新 更多