1. 程式人生 > 程式設計 >python3獲取url檔案大小示例程式碼

python3獲取url檔案大小示例程式碼

在python3中,urllib2被替換為urllib.requeset,因此標頭檔案中新增

import urllib.request as urllib2
def getRemoteFileSize(url,proxy=None):
 """ 通過content-length頭獲取遠端檔案大小
  url - 目標檔案URL
  proxy - 代理 """
 opener = urllib2.build_opener()
 if proxy:
  if url.lower().startswith('https://'):
   opener.add_handler(urllib2.ProxyHandler({'https' : proxy}))
  else:
   opener.add_handler(urllib2.ProxyHandler({'http' : proxy}))
 try:
  request = urllib2.Request(url)
  request.get_method = lambda: 'HEAD'
  response = opener.open(request)
  response.read()
 except Exception:
  return 0
 else:
  print(response.headers)
  fileSize = dict(response.headers).get('content-length',0)
  return int(fileSize)

使用上段程式碼發現輸出為0,考慮應該是沒查詢到content-length欄位,列印response.headers欄位後,發現content-length欄位應改為Content-Length,改後正常

在這裡插入圖片描述

def getRemoteFileSize(url,proxy=None):
 """ 通過content-length頭獲取遠端檔案大小
  url - 目標檔案URL
  proxy - 代理 """
 opener = urllib2.build_opener()
 if proxy:
  if url.lower().startswith('https://'):
   opener.add_handler(urllib2.ProxyHandler({'https' : proxy}))
  else:
   opener.add_handler(urllib2.ProxyHandler({'http' : proxy}))
 try:
  request = urllib2.Request(url)
  request.get_method = lambda: 'HEAD'
  response = opener.open(request)
  response.read()
 except Exception:
  return 0
 else:
  print(response.headers)
  fileSize = dict(response.headers).get('Content-Length',0)
  return int(fileSize)

總結

以上所述是小編給大家介紹的python3獲取url檔案大小示例程式碼,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回覆大家的。在此也非常感謝大家對我們網站的支援!
如果你覺得本文對你有幫助,歡迎轉載,煩請註明出處,謝謝!