Python重定向表单操作

时间:2017-08-23 17:14:00

标签: python action mechanize url-redirection http-status-code-302

我正在使用mechanize和python 2.7将请求发送到带有表单的页面,这次是GET数据

<form method='get' action='/470711262846118652822405241081316835027/new2'>
<textarea name='name' rows='5' style='width:100%'></textarea>
<br>
<table summary='' style='width:100%'>
<tr>
<td align='right' valign='top'>
<input type='submit' value='Submit'>
</td>
</tr>
</table>
</form> 

当我

try:
    request = Request(url,data,header)
    response = urlopen(request)
    html = response.read()
    return html
except IOError, e:
    print "*Cant open {0}{1}{2}".format(fg(2), url,attr(0))
    print "*Reason:{0}".format(e.reason)
    return None

我在请求中使用的网址是www.foo.com/new?name=bar,但操作是new2,此操作会将我重定向到另一个页面,我无法处理此问题。 当我在浏览器中手动完成所有这些操作时,我可以使用inspect元素从重定向中看到302代码。

标题,cookie,数据和一切都很好,因为我得到200 https代码,我可以阅读页面,但不能重定向

1 个答案:

答案 0 :(得分:0)

我不太熟悉机械化,但看起来你没有设置set_handle_redirect,所以302状态代码没有被处理。 见http://mechanize.readthedocs.io/en/latest/browser_api.html?highlight=handle#mechanize.Browser.set_handle_redirect

如果您尚未设置此选项,则需要手动检查HTTP状态302并阅读location标头以查找重定向目标URL。