【问题标题】:Downloading files from urls listed in txt file without using wget从 txt 文件中列出的 url 下载文件而不使用 wget
【发布时间】:2017-10-18 09:05:16
【问题描述】:

由于无法在我的工作中安装 wget 库,我需要一种解决方法来使用 txt 文件中列出的 URL 下载文件。我有一个名为 urls.txt 的 txt 文件,其中包含大约一千个链接,每个链接指向需要下载的文件。到目前为止,我有类似的东西,但不幸的是,尽管正在执行脚本,但它没有下载任何文件。

import urllib.request

with open("urls.txt", "r") as file:
    linkList = file.readlines()
for link in linkList:
    urllib.request.urlretrieve(link)

【问题讨论】:

    标签: python wget downloading-website-files


    【解决方案1】:

    如果存在第二个参数,则指定要复制到的文件位置(如果不存在,则该位置将是具有生成名称的临时文件)

    来自docs

    您需要指定第二个参数,该参数指的是要将文件内容下载到的文件路径,如下所示:

    ...
    for link in linkList:
        urllib.request.urlretrieve(link, link.split('/')[-1])
    

    就目前而言,您正在下载到具有生成名称的临时文件中。我不能 100% 确定您打算如何检索该名称,因此最好自己指定文件路径。

    【讨论】:

    • 好的,所以我的 URL 地址类似于 /DocumentXML2XLSDownload.vm?firsttime=true&repengback=true&documentId=XXXXXX&xslFileName=rher2xml.xsl&outputFileName=XXXX_2017_06_25_4.xls 我希望每个文件都以最后一部分“XXXX_2017_06_25_4”命名.xls”并放置在脚本的目录中。我应该如何处理?我对 Python 完全陌生,仍在试图弄清楚哪个短语意味着什么。
    • 这是一个单独的问题;您想知道如何解析 URL 查询字符串。谷歌一下,如果你运气不好,发布一个新问题并戳我,我会写另一个答案。
    • @Seidhe 在此处获取该文件名的一种快速而肮脏的方式类似于@AdamBarnes 使用的方式:link.split('outputFileName=')[-1] 将链接在"outputFileName=" 周围分成两部分,所以最后一部分(@ 987654325@) 将是您的文件名。一个不那么老套的方法确实是像提到的那样深入研究 url 解析。
    • 恭敬地 jadsq;这不是正确的方法。应该使用urllib.parse 模块。里面有两个专门为此而设计的函数。
    • @AdamBarnes 正确与否取决于情境,如果它是一次性脚本,你真的不必矫枉过正......
    猜你喜欢
    • 1970-01-01
    • 2015-09-12
    • 1970-01-01
    • 1970-01-01
    • 2016-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多