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

Python按迭代写入列表到CSV时单链接字符拆分输出问题求助

问题排查

你代码的核心错误有3处:

  • 文件打开逻辑错误:将open("urls.csv", "w")写在双层循环内部,每次循环都会用写入模式清空原有文件内容,最终只会保留最后一次循环的写入结果
  • writerows用法错误:writerows接收的参数是多行数据组成的可迭代对象,每个行又是包含对应列字段的序列。你传入的links是单个字符串,字符串本身是字符的可迭代对象,所以会被拆解成单个字符逐行写入
  • 表头重复写入:表头fields写在循环内,每次循环都会重复写入表头行,不符合CSV格式规范
    另外你提取链接的方式也可以优化,不需要手动切片字符串,直接用BeautifulSoup提取节点内容更稳定。

修正后代码

import csv
import requests
from bs4 import BeautifulSoup

# 先定义表头,全局只写一次
fields = ["Search Term", "URL"]
# 提前打开文件,避免循环内重复打开覆盖原有内容
with open("urls.csv", "w", newline="", encoding="utf-8") as f:
    write = csv.writer(f)
    # 写入表头
    write.writerow(fields)
    # 循环处理每个搜索词
    for t in terms:
        url = f"https://news.google.com/rss/search?q={t}&hl=en-US&gl=US&ceid=US%3Aen"
        html_page = requests.get(url)
        soup = BeautifulSoup(html_page.text, "lxml")
        for item in soup.find_all("item"):
            # 直接提取link节点文本,无需手动切片
            link = item.link.next_sibling.strip()
            # 按两列格式写入单行数据
            write.writerow([t, link])

注:加newline=""是为了避免Windows系统下CSV写入出现多余空行,指定encoding="utf-8"避免特殊字符乱码

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 03:12:03