如何将文件从URL下载到磁盘并猜测filenam

2024-06-01 14:22:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在寻找正确的方法从URL下载文件,保存到磁盘,并从URL或headers中找出文件名。在

解决方案可以是Python、Node、Ruby或PHP—只要其中一个选项对我来说都不重要。在

通过猜测URL中的文件名很容易实现一个幼稚的实现,但是我需要这样做,即使有重定向并且文件名不在URL中。在

以下是一些示例URL和文件名:

URL示例中的文件名

URL示例中的文件名+查询参数

重定向-头示例中的文件名

还有-这里有关于重定向的更多信息:Ruby - how to download a file if the url is a redirection?


Tags: 文件incomhttpurl示例文件名gif
2条回答

使用Pythonrequests模块。在

import requests, os

url = "http://static.guim.co.uk/sys-images/Guardian/Pix/pictures/2010/4/14/1271276213693/Snoop-Dogg-in-2004-001.jpg"
resp = requests.get(url, stream=True, allow_redirects=True)
realurl = resp.url.split('/')[-1].split('?')[0]

savepath = '' # set the folder to save to
filepath = os.path.join(savepath, realurl)

with open(filepath, 'wb') as image:
    if resp.ok:
        for content in resp.iter_content(1024):
            if content:
                image.write(content)

Ruby,使用Mechanizegem,简单情况:

require 'mechanize'
agent = Mechanize.new
agent.get(url).save

这甚至会遵循重定向并使用正确的文件名保存。它将第二个示例中的http查询字符串转换为有效的文件名。如果要删除任何查询字符串(警告:这可能是标识唯一资源所必需的),则可能需要按如下方式对其进行调整:

^{pr2}$

相关问题 更多 >