Python Mechanize 307错误

时间:2014-03-09 10:15:51

标签: python mechanize

我正在尝试在2个不同的页面上填写表单,第二页的表单操作是.cgi链接。我可以完全填写两个表单,但是当我尝试提交第二个表单时,mechanize返回307错误,该错误是从服务器生成的。

我查看了错误,并说这是一个临时重定向错误,但我认为机械化可以处理重定向?

有问题的代码(我包含我尝试访问的网址,因此代码可以运行):

from mechanize import *

counter = 0

br = Browser()
br.set_handle_redirect(HTTPRedirectHandler)
br.open('http://www.nationstates.net/page=create_nation1')
br.select_form('form')
br.form['name'] = 'faleraider' + str(counter)
br.form['currency'] = 'duobloon'
br.form['animal'] = 'parrot'
br.form['slogan'] = 'Arr, raise your new sails!'
br.form['email'] = 'falserraider' + str(counter) + '@sharklasers.com'
br.form['password'] = 'raider'
br.form['confirm_password'] = 'raider'
br.submit(name='create_nation')

br.select_form('form')
br.form['Q0'] = ['SD',]
br.form['Q1'] = ['SD',]
br.form['Q2'] = ['SD',]
br.form['Q3'] = ['SD',]
br.form['Q4'] = ['SD',]
br.form['Q5'] = ['SD',]
br.form['Q6'] = ['SD',]
br.form['Q7'] = ['SD',]
br.form.find_control('legal').selected=True
#br.set_debug_http(True)
response2 = br.submit() #error originates from here
print response2.get_data()

表单填写正常,它是服务器返回的错误代码(我不知道为什么服务器将其作为错误返回,或者为什么机械化不处理它)。请注意,我确实添加了重定向处理程序,它没有帮助。

表单发布的页面是/cgi-bin/build_nation.cgi

我曾尝试使用urllib + urllib2,Beautiful Soup和splinter,但它们都返回了相似或更差的结果。

1 个答案:

答案 0 :(得分:0)

首次提交后,您认为不必捕获返回的内容吗? 我没有使用过机械术!