站內搜尋:Yahoo搜尋如果沒有給完整的網址,請在站內再搜尋一次!

2019-08-13

Python 3 : urllib.request 存取網頁的內建標準模組 (URL handling modules) / urllib.error try ... except ... else 異常錯誤處理

  1. 官方參考文件:
  2. urllib包含處理網路請求和操作URL的五個子模組:
    • urllib.error : 包含由urllib.request所丟出的異常、錯誤
    • urllib.parse : 解析URL
    • urllib.request :  開啟及讀取URL的內容
    • urllib.response : 
    • urllib.robotparse : 用來解析robots.txt
  3. urllib.request模組,網頁內容請求及回應內容讀取的程式碼範例:zTimeStamp=str(dt.datetime.now().timestamp()*1000)[:13]
    zURLtoGetStockInfo="https://mis.twse.com.tw/stock/api/getStockInfo.jsp?ex_ch=%s&json=1&delay=0&_=%s"
    zURLtoGetStockInfo=zURLtoGetStockInfo%('tse_1440.tw',zTimeStamp)
    ##(1)建立請求並開啟網頁
    oResp=urllib.request.urlopen(zURLtoGetStockInfo)
    ##(2)取得網頁回應的內容
    oHTML=oResp.read()
    ##(3)從網頁回應內容中載入JSON內容
    oJSON=json.loads(oHTML)
    print(oJSON)
    ##等同上面(1)請求、(2)回應、(3)載入三段程序
    oJSON=json.loads(urllib.request.urlopen(zURLtoGetStockInfo).read())
    print(oJSON)
  4. 利用try ... except ... 取得讀取網頁內容失敗的訊息:
    try:
        oJSON=json.loads(urllib.request.urlopen(zURLtoGetStockInfo).read())
        print(oJSON)
    #except Exception as e:
    #urllib.error.URLError : 有reason,無code
    #except urllib.error.URLError as e:
    #urllib.error.HTTPError : 有code,reason,headers
    except urllib.error.HTTPError as e:
        print("ErrorCode=", e.code)
        print("ErrorReason=", e.reason)
        print("ErrorDescription=", e)
  5.     oJSON={'rtcode':'error404'}

    if oJSON['rtcode']=='error404':
        print("請求網頁內容失敗或發生錯誤!!!")
    else:
        print("請求網頁內容成功!!!")

    # ErrorCode= 404
    # ErrorReason= Not Found
    # ErrorDescription= HTTP Error 404: Not Found
    # 請求網頁內容失敗或發生錯誤!!!

沒有留言:

張貼留言