2011-07-20 123 views
5

我有這個非常簡單的代碼來檢查網站是否啓動或關閉。Python httplib2處理異常

import httplib2 
h = httplib2.Http() 
response, content = h.request("http://www.folksdhhkjd.com") 
if response.status == 200: 
    print "Site is Up" 
else: 
    print "Site is down" 

當我輸入一個有效的網址時,它正確地打印網站是因爲狀態是預期的200。但是,當我輸入一個無效的網址時,是否應該打印網站已關閉?相反,它會打印一個異常,如下所示

Traceback (most recent call last): 
    File "C:\Documents and Settings\kripya\Desktop\1.py", line 3, in <module> 
    response, content = h.request("http://www.folksdhhkjd.com") 
    File "C:\Python27\lib\site-packages\httplib2\__init__.py", line 1436, in request 
    (response, content) = self._request(conn, authority, uri, request_uri, method, body, headers, redirections, cachekey) 
    File "C:\Python27\lib\site-packages\httplib2\__init__.py", line 1188, in _request 
    (response, content) = self._conn_request(conn, request_uri, method, body, headers) 
    File "C:\Python27\lib\site-packages\httplib2\__init__.py", line 1129, in _conn_request 
    raise ServerNotFoundError("Unable to find the server at %s" % conn.host) 
ServerNotFoundError: Unable to find the server at www.folksdhhkjd.com 

如何覆蓋此異常並打印我自定義的「網站已關閉」消息?請指導一下嗎?

編輯

另外一個問題......就是使用

h = httplib2.Http('.cache') 

h = httplib2.Http() 

回答

6
try: 
    response, content = h.request("http://www.folksdhhkjd.com") 
    if response.status==200: 
     print "Site is Up" 
except httplib2.ServerNotFoundError: 
    print "Site is Down" 

的問題與您的代碼之間的區別是,如果主機不響應,請求不返回任何狀態co de,所以這個庫會拋出一個錯誤(我認爲這是庫本身的一個特點,在嘗試發出請求之前做某種DNS解析)。

+0

基本的異常處理是我現在應該學習的東西然後...非常感謝! –

4
h = httplib2.Http('.cache') 

緩存它檢索一個叫.cache目錄中,所以如果你做同樣的請求,兩次可能沒有真正得到一切兩倍的東西;以點開頭的文件隱藏在POSIX文件系統中(例如在Linux上)。

h = httplib2.Http() 

不緩存它的結果,所以你必須得到每一次請求的一切。

+0

哦,所以......聽起來最好的做法是使用'h = httplib2.Http('。cache')'。非常感謝! –

+0

我無論如何都投了兩個答案。謝謝! –

+0

我試圖通過URLS循環使用文件這樣 'SF =開放( 'C:/文件和設置/用戶/桌面/ 1.txt的', 'R') 用於SF行: 活性= 0 打印 「當前URL爲:\ t」 的+線 嘗試: 響應,含量= h.request(線) 如果response.status == 200: 活性= 1 除了httplib2.ServerNotFoundError: print「Site is Down」 sf.close()' 該文件中的一個URL是http://www.fastbookmarking.info。該網站已啓動。我檢查了狀態代碼及其200 –