2013-01-10 79 views
2

我嘗試使用python登錄quora。但它給了我以下錯誤。使用python登錄quora

urllib2.HTTPError: HTTP Error 500: Internal Server Error 

這是我的代碼,直到現在。我也在代理之後工作。

import urllib2 
import urllib 
import re 
import cookielib 

class Quora: 
    def __init__(self): 
     '''Initialising and authentication''' 

     auth = 'http://name:[email protected]:port' 
     cj = cookielib.CookieJar() 
     logindata = urllib.urlencode({'email' : 'email' , 'password' : 'password'}) 
     handler = urllib2.ProxyHandler({'http' : auth}) 
     opener = urllib2.build_opener(handler , urllib2.HTTPCookieProcessor(cj)) 
     urllib2.install_opener(opener) 
     a = urllib2.urlopen('http://www.quora.com/' , logindata) 

def main(): 
    Quora() 

有人可以指出什麼是錯的?

if __name__ == '__main__': 
    main() 
+2

我想在後面的部分添加更多的代碼,這只是開始。您能否指出,如果您有任何想法,有什麼不對? @DanielRoseman – Manoj

回答

1

嘗試是這樣的:

# Load proxies 
proxies = [] 
proxies_fp = open('proxies.txt', 'r') # A list of proxies 
for proxy in proxies_fp: 
     proxies.append(proxy) 


cookiejar = cookielib.CookieJar() 

def perform_request(url, opener, credientials): 
     # Instantiate our request object 
     request = urllib2.Request(url) 

     # Perform the request, returning a pointer to the result set. 
     result = opener.urlopen(request, credentials) 

     return result 

credentials ={ 
     'username' : 'username', 
     'password' : 'password' 
     } 

encoded_credentials = urllib.urlencode(credentials) 

def main(): 
     # Get random proxy 
     proxy = random.choice(proxies) 

     # Install our proxy 
     opener = urllib2.build_opener(
      urllib2.ProxyHandler({'http': proxy}), 
      urllib2.HTTPRedirectHandler(), 
      urllib2.HTTPHandler(debuglevel=0), 
      urllib2.HTTPSHandler(debuglevel=0), 
      urllib2.HTTPCookieProcessor(cookiejar), 
      ) 
     urllib2.install_opener(opener) 
     a = perform_request(url, opener, encoded_credentials) 

- 未經檢驗 -

我不得不做一些類似的,和它的工作對我這樣。 (請注意,這不是我使用的代碼的精確副本,我不得不操作它,並且沒有測試)

+1

感謝您的幫助。但它仍然給我一個內部服務器錯誤。我找不到你的代碼片段和我的代碼片段之間的區別,除了你已經添加了HTTPHandlers這個事實。你是否在嘗試代碼並自己測試它? – Manoj

+0

500意味着它在服務器端的問題,如quora.com,你可能會把一個不正確的參數,頭等你需要仔細閱讀他們的文檔。您需要確保您的請求呼叫是正確的。這不是你的客戶端代碼問題 –