2010-03-04 191 views
0

我在創建使用URL的腳本時遇到了一些麻煩。我使用urllib.urlopen()來獲取所需URL的內容。但是其中一些URL需要認證。 urlopen提示我輸入我的用戶名和密碼。 我需要的是忽略每個需要認證的URL,只需輕鬆地跳過並繼續,有沒有辦法做到這一點? 我想知道捕捉HTTPError異常,但事實上,異常是由urlopen()方法處理的,所以它不起作用。urllib忽略身份驗證請求

感謝您的每一個回覆。

回答

1

你說得對有關urllib2.HTTPError例外:

exception urllib2.HTTPError

雖然是個例外(URLError的子類),引發HTTPError也可以作爲一個非特殊類文件返回值(與urlopen()返回的相同)。這在處理異常的HTTP錯誤時很有用,例如請求身份驗證的

code

如RFC 2616該數字值對應於碼的詞典中找到的值定義爲在BaseHTTPServer.BaseHTTPRequestHandler.responses發現的HTTP狀態代碼。

可用於驗證身份驗證是必需的異常的代碼屬性 - 碼401

>>> try: 
...  conn = urllib2.urlopen('http://www.example.com/admin') 
...  # read conn and process data 
... except urllib2.HTTPError, x: 
...  print 'Ignoring', x.code 
...  
Ignoring 401 
>>> 
+0

非常感謝:) – j3nc3k 2010-03-05 18:57:17