You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

遇到Urllib 404错误时如何继续处理其他链接?

处理图片下载时的HTTP错误并继续执行

你可以通过异常捕获机制让程序在遇到404等HTTP错误时跳过无效链接,继续处理后续内容。核心思路是用try-except块包裹可能抛出错误的代码,捕获对应的异常后记录错误信息,不终止程序运行。

原问题代码

import pandas as pd
import urllib.request
import urllib.error
opener = urllib.request.build_opener()

def url_to_jpg (i,url,file_path) :
        filename="image-{}".format(i)
        full_path = "{}{}".format(file_path, filename)
        opener.addheaders = [('User-Agent', 'Chrome/5.0')]
        urllib.request.install_opener(opener)
        urllib.request.urlretrieve(url,full_path)
        print ("{} Saved".format(filename))
        return None

filename="listado.csv"
file_path="/Users/marcelomorelli/Downloads/tapas/imagenes"
urls=pd.read_csv(filename)

for i, url in enumerate(urls.values):
    url_to_jpg (i,url[0],file_path)

修改后的代码(加入异常处理)

import pandas as pd
import urllib.request
import urllib.error

# 全局设置opener,无需每次调用函数都重复安装
opener = urllib.request.build_opener()
opener.addheaders = [('User-Agent', 'Chrome/5.0')]
urllib.request.install_opener(opener)

def url_to_jpg(i, url, file_path):
    filename = f"image-{i}"
    full_path = f"{file_path}/{filename}"  # 加入路径分隔符,避免拼接错误
    try:
        urllib.request.urlretrieve(url, full_path)
        print(f"{filename} Saved")
    except urllib.error.HTTPError as e:
        print(f"下载 {filename} 失败: HTTP错误 {e.code} - {e.reason}")
    except urllib.error.URLError as e:
        print(f"下载 {filename} 失败: 链接错误 - {e.reason}")
    except Exception as e:
        print(f"下载 {filename} 失败: 未知错误 - {str(e)}")
    return None

filename = "listado.csv"
file_path = "/Users/marcelomorelli/Downloads/tapas/imagenes"
urls = pd.read_csv(filename)

for i, url in enumerate(urls.values):
    url_to_jpg(i, url[0], file_path)

关键说明

  • try-except块:将urlretrieve下载操作放入try代码段,触发HTTP错误(如404)时会被urllib.error.HTTPError捕获,打印错误信息后直接跳过当前链接,继续执行下一次循环。
  • 多异常捕获:额外处理URLError以覆盖DNS解析失败、网络中断等非HTTP状态码的链接问题,通用Exception捕获其他未知错误。
  • 优化opener设置:原代码每次调用函数都重复安装opener,修改后仅全局设置一次,提升运行效率。
  • 路径拼接优化:在文件路径中加入/,避免因原路径末尾无分隔符导致的路径拼接错误。

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 20:45:25