- 官方參考文件:
- urllib包含處理網路請求和操作URL的五個子模組:
- urllib.error : 包含由urllib.request所丟出的異常、錯誤
- urllib.parse : 解析URL
- urllib.request : 開啟及讀取URL的內容
- urllib.response :
- urllib.robotparse : 用來解析robots.txt
- 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)
- 利用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)
oJSON={'rtcode':'error404'}
if oJSON['rtcode']=='error404':
print("請求網頁內容失敗或發生錯誤!!!")
else:
print("請求網頁內容成功!!!")
# ErrorCode= 404
# ErrorReason= Not Found
# ErrorDescription= HTTP Error 404: Not Found
# 請求網頁內容失敗或發生錯誤!!!
沒有留言:
張貼留言