2013-05-22 96 views
0

如何使用Python和urllib2獲取受保護頁面的內容?使用Python獲取受保護網頁的內容

我需要爲我試圖檢索的頁面指定一個用戶名和密碼..例如:

content = urllib2.urlopen(URL, username, password).read() 

我知道這是不是urllib2的API的一部分。這只是給什麼,我需要一個例子,從API。

+1

HTML頁面通常以兩種方式保護;使用cookie標記或使用HTTP驗證標頭。你需要弄清楚哪一個,然後得到這個cookie(通常通過POST用戶名和密碼到一個特定的登錄表單動作),或者通過添加一個[授權標頭](http://stackoverflow.com/questions/635113/python -urllib2-基本-HTTP認證和-TR-IM) –

回答

2

我建議你看看python requests庫。

開箱即用很好的支持basic http authentication

例如

import requests 
content = requests.get(URL, auth=('user', 'pass')) 

使用requests您還可以設置sessions(用於管理Cookie),並輕鬆地POST數據(例如,登錄表單),並保持cookie來瀏覽所有網頁只登錄用戶訪問。

閱讀更多關於session objectsposting data的出色文檔。

如果你絕對必須使用urllib2這裏是從另一個線程採取基本的HTTP驗證一個有用的片段:

import urllib2, base64 

request = urllib2.Request("http://api.foursquare.com/v1/user") 
base64string = base64.standard_b64encode('%s:%s' % (username, password)) 
request.add_header("Authorization", "Basic %s" % base64string) 
result = urllib2.urlopen(request) 
0

你可以用urllib2的做到這一點只要看看Urllib docs

它實際上有很多使用像硒這樣的網絡驅動程序更容易進入形式,但關於硒的東西是它打開一個實際的窗口,而urllib在後臺,但硒更容易使用

Selenium API

這些只是一些建議,我希望幫助