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

如何修复提取多URL中h2文本并保存至CSV的Python代码问题

常见问题分析与修正方案

可能存在的代码问题

  • 未对齐两个列表长度:直接按索引写入或用zip()函数(会以短列表为准截断),导致长列表的剩余项无法写入,不符合“剩余行另一列留空”的要求。
  • 获取h2文本方式错误:使用h2.string而非h2.get_text(strip=True),可能获取不到包含子标签的h2内容,或文本带多余空格、换行符。
  • CSV写入逻辑缺失:未先计算两个h2列表的最大长度,也没有对短列表补全空值,导致输出行数与短列表一致。
  • 未处理请求异常:网络请求失败(比如HTTP错误、连接超时)时,直接解析空内容,得到空h2列表却未提示错误。

修正后的代码示例

import requests
from bs4 import BeautifulSoup
import csv

def extract_h2(url):
    try:
        resp = requests.get(url)
        resp.raise_for_status()
        soup = BeautifulSoup(resp.text, "html.parser")
        # 提取h2文本并清理多余空格
        return [h.get_text(strip=True) for h in soup.find_all("h2")]
    except Exception as err:
        print(f"处理URL {url}失败: {str(err)}")
        return []

# 替换为你的目标URL
url_a = "https://example.com/page-a"
url_b = "https://example.com/page-b"

h2_a = extract_h2(url_a)
h2_b = extract_h2(url_b)

# 对齐两个列表长度,短列表补空字符串
max_rows = max(len(h2_a), len(h2_b))
h2_a_padded = h2_a + [""] * (max_rows - len(h2_a))
h2_b_padded = h2_b + [""] * (max_rows - len(h2_b))

# 写入CSV文件
with open("h2_output.csv", "w", newline="", encoding="utf-8") as f:
    writer = csv.writer(f)
    writer.writerow(["URL_A的H2内容", "URL_B的H2内容"])
    for item_a, item_b in zip(h2_a_padded, h2_b_padded):
        writer.writerow([item_a, item_b])

核心修正点说明

  • 列表对齐逻辑:通过计算最大行数,用空字符串补全短列表,确保两个列表长度一致,满足“长URL剩余行另一列留空”的需求。
  • 文本提取优化:用get_text(strip=True)确保h2文本干净无冗余格式。
  • 异常处理:捕获请求阶段的错误,避免程序崩溃同时给出明确提示。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 20:01:05