2008-10-09 19 views
138

我想使用python下載和解析網頁,但要訪問它,我需要一些cookie設置。因此我需要先通過https登錄到網頁。登錄時刻涉及向/login.php發送兩個POST參數(用戶名,密碼)。在登錄請求期間,我想從響應頭中檢索cookie並存儲它們,以便我可以在請求中使用它們來下載網頁/data.php。如何使用Python登錄到網頁並檢索cookie以備後用?

我該如何做到這一點在python(最好是2.6)?如果可能的話,我只想使用內置模塊。

回答

144
import urllib, urllib2, cookielib 

username = 'myuser' 
password = 'mypassword' 

cj = cookielib.CookieJar() 
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj)) 
login_data = urllib.urlencode({'username' : username, 'j_password' : password}) 
opener.open('http://www.example.com/login.php', login_data) 
resp = opener.open('http://www.example.com/hiddenpage.php') 
print resp.read() 

resp.read()是要打開的頁面的直接的HTML,您可以使用opener查看使用會話cookie的任何頁面。

+9

`resp.read()`會給你的內容 – 2010-12-11 04:05:32

+1

這安全嗎?這不會允許數據包嗅探器看到明文密碼嗎?會使用Https更安全嗎? – Heartinpiece 2012-12-10 06:58:58

149

下面是使用優秀requests庫版本:

from requests import session 

payload = { 
    'action': 'login', 
    'username': USERNAME, 
    'password': PASSWORD 
} 

with session() as c: 
    c.post('http://example.com/login.php', data=payload) 
    response = c.get('http://example.com/protected_page.php') 
    print(response.headers) 
    print(response.text) 
相關問題