【问题标题】:How can I get the file size on the Internet knowing only the URL如何仅知道 URL 获取 Internet 上的文件大小
【发布时间】:2010-08-30 14:25:26
【问题描述】:

我想在下载之前获取 http://.. 文件的大小。 我不知道如何使用http请求。

谢谢!

【问题讨论】:

    标签: python http file download


    【解决方案1】:
    import urllib2
    f = urllib2.urlopen("http://your-url")
    size= f.headers["Content-Length"]
    print size
    

    【讨论】:

    • HTTP HEAD 是更好的选择。所以你不需要下载payload。
    • 但是使用requests 模块如果我检索到的文件大小与从 urlOpen 获得的不同,请参阅:>>> requests.head(url).headers.get('content-length', None) '8176' >>> urllib.urlopen(url).info()['content-length'] '38227' >>> len(requests.get(url).content) 38274
    【解决方案2】:

    HTTP HEAD method 是为这样的场景而发明的(想要了解有关响应的数据而不获取响应本身)。如果服务器返回一个Content-Length header(并支持HEAD),那么您可以通过查看返回的Content-Length 找出文件的大小(以八位字节为单位)。

    【讨论】:

      【解决方案3】:

      这里是完整的答案:

      import urllib2
      f = urllib2.urlopen ("http://your-url")
      if "Content-Length" in f.headers:
          size = int (f.headers["Content-Length"])
      else:
          size = len (f.read ());
      print size
      

      【讨论】:

      • 写起来并不难,但这是一个简洁的答案。 +1。欢迎使用 stackoverflow!
      【解决方案4】:

      并非所有页面都有内容长度标题。在这种情况下,唯一的选择是阅读整个页面:

      len(urllib2.urlopen('http://www.google.com').read());
      

      【讨论】:

      • 太棒了!大多数商业网站没有内容长度标题!
      猜你喜欢
      • 1970-01-01
      • 2010-12-31
      • 1970-01-01
      • 2020-05-31
      • 2023-03-20
      • 1970-01-01
      • 2016-05-29
      • 2017-10-03
      • 1970-01-01
      相关资源
      最近更新 更多