2013-07-04 95 views
1

我試圖使用mechanize模塊登錄到quora.com。試圖使用機械化登錄quora

這是我的代碼:

#!/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() 

我得到這個錯誤:

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 

我知道HTTP 500意味着有什麼不對的服務器端,但我不知道它是什麼,以及我如何調試問題。

回答

5

我敢打賭mechanize無法處理提交此特定表單。使用瀏覽器的開發者工具,你可以看到,這種形式通過JavaScript XHR POST請求提交給https://www.quora.com/webnode2/server_call_POST?__instart__那裏請求參數看起來像:

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)開啓調試你會看到後面的腳本場景使POST請求http://www.quora.com主頁以下參數:

email=<email> 
allow_passwordless=allow_passwordless 
password=<password> 

正如你可以看到:錯誤的URL和不同的參數。

對於這種特殊情況,我會使用selenium

希望有所幫助。

+0

你是怎麼找到這一切的? –

+0

和硒的問題:http://stackoverflow.com/questions/17462884/is-selenium-slow-or-is-my-code-wrong –

+1

正如我所說的瀏覽器開發工具和機械化調試模式。我認爲這個問題沒有什麼可以回答的。無論如何,我會看看硒問題。 – alecxe