You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何使用Python 3.7从TXT文件批量下载HTML文件?

批量从TXT文件下载HTML文件的简便实现

嗨,这个需求其实很好解决,咱们基于你已经写的代码扩展一下就行,下面是完整的实现方案,还加了一些实用的细节处理:

完整代码示例

import urllib.request
import os
from urllib.error import URLError

# 配置参数
txt_file_path = "urls.txt"  # 你的URL列表文件路径
download_dir = "/users/user/Downloads"  # 下载保存目录

# 确保下载目录存在,不存在则自动创建
os.makedirs(download_dir, exist_ok=True)

# 读取URL列表
with open(txt_file_path, "r") as f:
    # 适配你示例里的空格分隔格式;如果是每行一个URL,换成`urls = [line.strip() for line in f.readlines()]`
    urls = f.read().split()

# 批量执行下载
for url in urls:
    # 跳过可能存在的空内容
    if not url.strip():
        continue
    try:
        # 从URL中自动提取文件名(比如从http://xxx/file1.html拿到file1.html)
        filename = os.path.basename(url)
        save_path = os.path.join(download_dir, filename)
        # 执行下载操作
        urllib.request.urlretrieve(url, save_path)
        print(f"成功下载:{url} -> {save_path}")
    except URLError as e:
        print(f"下载失败:{url},错误原因:{e}")

代码细节说明

  • 安全读取文件:用with open()语句会自动关闭文件,比手动调用open()/close()更稳妥,避免资源泄漏。
  • 目录兼容处理os.makedirs(download_dir, exist_ok=True)会自动创建目标目录,就算目录已经存在也不会报错,解决了因目录不存在导致的下载失败问题。
  • 灵活提取文件名os.path.basename(url)可以自动从URL末尾截取文件名,不用手动拼接,适配不同格式的URL。
  • 错误容错机制:加入try-except捕获网络类错误,这样单个URL下载失败不会导致整个程序终止,还能直观看到错误原因。

额外实用提示

  • 如果你的URL列表里有重复文件名,后面的文件会覆盖前面的。要是想避免覆盖,可以给文件名加个时间戳或者序号,比如:
    import time
    # 生成带时间戳的文件名
    name_part, ext_part = os.path.splitext(os.path.basename(url))
    filename = f"{name_part}_{int(time.time())}{ext_part}"
    
  • 要是需要更快的下载速度,后期可以尝试多线程或者异步请求,但对于初学者来说,上面的单线程实现已经足够简单好用。

内容的提问来源于stack exchange,提问作者Belmonte

火山引擎 最新活动