首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尝试使用mechanize登录到quora

尝试使用mechanize登录到quora
EN

Stack Overflow用户
提问于 2013-07-04 21:28:32
回答 1查看 1.1K关注 0票数 2

我正在尝试使用mechanize模块登录到quora.com。

这是我的代码:

代码语言:javascript
复制
#!/usr/bin/env python

import mechanize
import cookielib

br = mechanize.Browser() # create a browser object
br.set_handle_equiv(True)
br.set_handle_redirect(True)
br.set_handle_referer(True)
br.set_handle_robots(False)
br.set_headers = [('User-Agent', 'Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko)')]

cj = cookielib.LWPCookieJar()
br.set_cookiejar(cj)

res = br.open('http://www.quora.com')
br.select_form(nr = 0)

br.form['email'] = 'uuuu'
br.form['password'] = 'pppp'

res = br.submit()
print res.read()

我得到了这个错误:

代码语言:javascript
复制
Traceback (most recent call last):
  File "mech.py", line 29, in <module>
    res = br.submit()
  File "/usr/local/lib/python2.7/dist-packages/mechanize/_mechanize.py", line 541, in submit
    return self.open(self.click(*args, **kwds))
  File "/usr/local/lib/python2.7/dist-packages/mechanize/_mechanize.py", line 203, in open
    return self._mech_open(url, data, timeout=timeout)
  File "/usr/local/lib/python2.7/dist-packages/mechanize/_mechanize.py", line 255, in _mech_open
    raise response
mechanize._response.httperror_seek_wrapper: HTTP Error 500: Internal Server Error

我知道HTTP500意味着服务器端有问题,但我不知道它是什么,也不知道如何调试这个问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-04 21:55:12

我敢打赌,mechanize不能处理这个表单的提交。使用浏览器开发工具,您可以看到此表单是通过javascript XHR POST请求提交到https://www.quora.com/webnode2/server_call_POST?__instart__的,其中请求参数如下所示:

代码语言:javascript
复制
json:{"args":[],"kwargs":{"email":"<email>","password":"<password>","passwordless":1}}
formkey:62c4f0d88246bfd81b27cf0dca410d75
window_id:dep4-4597603286175583039
_lm_transaction_id:0.4317954108119011
_lm_window_id:dep4-4597603286175583039
__vcon_json:["hmac","t1cKg1QhQsYPCA"]
__vcon_method:do_login
js_init:{}

仅供参考,如果您打开通过br.set_debug_http(True)进行调试,您将看到您的幕后脚本向主页http://www.quora.com发出POST请求,其中包含以下参数:

代码语言:javascript
复制
email=<email>
allow_passwordless=allow_passwordless
password=<password>

如你所见:错误的URL和不同的参数。

在这种情况下,我会使用selenium

希望这能有所帮助。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17471579

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档