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

如何将URLError/HTTPError信息写入CSV文件的错误报告列?

解决方法:将错误信息写入CSV的Error Report列

以下是修改后的完整代码,能实现你需要的功能:

import bs4
from urllib.request import urlopen
from urllib.error import HTTPError, URLError
import csv


def getTitle(soup):
    title_tag = soup.find('title')
    return title_tag.text.strip() if title_tag else '无标题'

urlList = ["https://stackoverflow.com", "https://invalid-url-example.com", "https://example.com"]

with open('output.csv', 'w', newline='', encoding='utf-8') as f_output:
    csv_output = csv.writer(f_output)
    csv_output.writerow(['Title', 'Error Report'])
    
    for url in urlList:
        error_report = ''
        title = ''
        try:
            html = urlopen(url)
            soup = bs4.BeautifulSoup(html.read(), 'html.parser')
            title = getTitle(soup)
        except HTTPError as e:
            error_report = f"HTML Error: {e}"
        except URLError as e:
            error_report = f"URL Error: {e}"
        except Exception as e:
            error_report = f"其他错误: {e}"
        csv_output.writerow([title, error_report])

关键修改说明:

  • 修复表头语法错误:原代码中Error Report未加引号,会被当作变量名触发报错,改为字符串格式'Error Report'。
  • 统一行写入逻辑:每个URL循环开始时初始化error_report和title,无论请求成功或失败,最后都会写入一行数据,确保CSV中每个URL都有对应的记录。
  • 错误信息优化:捕获异常时保留具体错误描述(比如HTTP状态码、域名解析失败原因),比单纯的"HTML Error"更具排查价值。
  • 标题容错处理:修改getTitle函数,先检查title标签是否存在,避免因页面结构异常导致的程序崩溃。
  • 编码设置:打开文件时指定encoding='utf-8',防止中文或特殊字符写入CSV时出现乱码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 05:25:21