2012-02-10 31 views
1

此腳本成功獲取200響應對象,獲取cookie並返回reddit的股票主頁源。但是,它應該獲得只能在登錄後訪問的「最近的活動」子頁面的來源。這使我認爲它沒有正確登錄,但用戶名和密碼是準確的,我已經仔細檢查過。Python腳本正在抓取錯誤的頁面源。我認爲它沒有正確登錄?

#!/usr/bin/python 
import requests 
import urllib2 

auth = ('username', 'password') 
with requests.session(auth=auth) as s: 
    c = s.get('http://www.reddit.com') 
    cookies = c.cookies 
    for k, v in cookies.items(): 
      opener = urllib2.build_opener() 
      opener.addheaders.append(('cookie', '{}={}'.format(k, v))) 
      f = opener.open('http://www.reddit.com/account-activity') 
      print f.read() 

回答

0

它看起來像你使用標準的「HTTP基本」認證,這不是Reddit用來登錄到它的網站。 (幾乎沒有網站使用HTTP Basic(彈出一個請求身份驗證的模式對話框),但實現他們自己的用戶名/密碼錶單)。

您需要做的是獲取主頁,閱讀登錄表單字段,填寫用戶名和密碼,將響應發佈回網站,獲取生成的cookie,然後使用cookie未來的要求。你可能還有很多其他的細節可以解決,但你必須進行試驗。

+0

太好了,謝謝。我正在檢查https://github.com/reddit/reddit/wiki/API%3A-login,我又回到了正軌。 – FlyingTriangle 2012-02-10 07:53:44

+0

哦,嘿,如果有官方API,那麼這是一個更好的選擇。 – 2012-02-10 07:58:50

-1

我只是想,也許我們有同樣的問題。我得到狀態代碼200確定。但腳本從未登錄過我,我收到了一些建議和幫助。希望你能讓我知道什麼對你也有用。好像reddit也使用相同的系統。

看看我的問題正在討論的頁面。 Authentication issue using requests on aspx site