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

Python网页爬虫写入CSV文件出现多余换行空格如何解决

核心结论

用字典存储爬取数据完全不是解决CSV多余换行/空格问题的方案,二者没有任何因果关联。你观察到讲师用字典写代码没出现这个问题,本质是他在代码里做了文本清洗、或者写文件时传了正确参数,和数据结构选择没关系。

问题产生的两个根本原因
  • 写CSV时的文件打开方式错误:Python官方csv模块明确要求,打开待写入的CSV文件必须传入newline=''参数,否则在Windows环境下会自动在每两行内容之间插入一个空行,也就是你示例里表头、各条数据之间的空白行来源。
  • 提取的文本未做清洗:通过BeautifulSoup的get_text()拿到的内容,会原封不动保留网页源码里的换行符、缩进空格、首尾空白字符,这些不属于有效内容的格式字符被写入CSV后,就会出现单个单元格内容被拆成多行、前后带多余空格的问题。
修复后可直接运行的代码
import requests
from bs4 import BeautifulSoup
from csv import writer

response = requests.get("http://quotes.toscrape.com/")
soup = BeautifulSoup(response.text, "html.parser")
quotes = soup.find_all(class_="quote")

# 打开文件时新增newline=''参数,指定utf-8编码避免特殊字符乱码
with open("web_scraping.csv", "w", newline='', encoding='utf-8') as f:
    csv_writer = writer(f)
    csv_writer.writerow(["Title", "Author", "Link"])

    for quote in quotes:
        # 提取文本后做清洗:去除首尾空白,删除内容里的换行、回车符
        texts = quote.find(class_="text").get_text().strip().replace('\n', '').replace('\r', '')
        author = quote.find(class_="author").get_text().strip().replace('\n', '').replace('\r', '')
        link = quote.find("a")["href"].strip()
        csv_writer.writerow([texts, author, link])
补充说明
  • 就算你改用字典+DictWriter的方式写CSV,如果不做上述两个修正,一样会出现多余换行、空格的问题。DictWriter只是提供了按字段名映射写入的语法糖,不会自动帮你处理文件写入参数、清洗文本内容。
  • 网页爬取的所有文本字段写入存储前都建议做空白字符清洗,网页源码里的换行、缩进是给浏览器渲染排版用的,不属于你要采集的有效文本内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 17:09:18