urllib判斷獲取數據大小

urllib包含四個模塊:

  1. urllib.request——請求處理
  2. urllib.error——異常處理
  3. urllib.parse——URL處理
  4. urllib.robotparse——用來解析頁面的robots.txt文件

    我們這裏主要講一下urllib的request模塊裏面對網頁頭信息的處理,我麼一般會用urllib.request.urlopen()來對網頁請求進行獲取,它會返回一個http.client.HTTPResponse類型的對象,並對應有如下方法:
read(),readinto(),getheader(name),getheaders(),fileno()等函數和msg,version、status,reason,debuglevel,closed等屬性。
    我們這裏可以調用裏面的getheader()對要下載處理的文件的length進行判斷——getheader('Content-Length'),繼而避免無法下載時打開無用文件,這裏也可以從文件角度出發處理。

    類似我們之前QQ音樂爬蟲中的處理:

with open(filename, 'wb') as f:
        f.write(res.raw.read())
    if(urllib.request.urlopen(url).getheader('Content-Length') > 0):
        print("成功下載歌曲:{}".format(name.replace("?", "").replace("/", "_").replace("\\", "_").replace("\"", "")))
        # size = urllib.request.urlopen(url).getheader('Content-Length')
        # print(size)
    else:
        print("下載失敗")
        os.remove(filename)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章