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

Scrapy导出CSV文件时如何将分隔符从逗号改为分号

Scrapy导出CSV文件时如何将分隔符从逗号改为分号

嗨,我来帮你搞定这个CSV分隔符的问题~Scrapy默认用逗号作为CSV的字段分隔符,要改成分号其实很简单,有两种常用的方法,你可以选适合自己的:

方法一:在Spider代码里配置(永久生效,针对这个爬虫)

你已经在Spider里用了custom_settings来设置USER_AGENT,直接在这个字典里加上FEED_EXPORT_DELIMITER配置就行。修改后的完整代码如下:

from scrapy.item import Field
from scrapy.item import Item
from scrapy.spiders import Spider
from scrapy.selector import Selector
from scrapy.loader import ItemLoader

class Pregunta(Item):
    id = Field()
    pregunta = Field()
    descripcion = Field()

class StackOverFlowSpider(Spider):
    name = "MiPrimerSpider"
    custom_settings = {
        "USER_AGENT": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",
        "FEED_EXPORT_DELIMITER": ";"  # 新增的分号分隔符配置
    }

    start_urls = ["https://stackoverflow.com/questions"]

    def parse(self, response):
         sel = Selector(response)
         preguntas = sel.xpath("//div[@id ='questions']//div[@class='s-post-summary--content']")
         print(preguntas)

         for pregunta in preguntas:
             item = ItemLoader(item = Pregunta(), selector = pregunta)
             item.add_xpath('pregunta','.//h3/a/text()')
             item.add_xpath('descripcion',".//div[contains(@class,'excerpt')]/text()")
             item.add_value('id', 1)
             yield item.load_item()

修改完之后,你还是用原来的命令运行:
scrapy runspider Intro_Scrapy.py -o video.csv
导出的CSV就会自动用分号分隔字段了。

方法二:命令行临时指定(不用改代码,单次生效)

如果只是偶尔需要导出分号分隔的CSV,不想修改代码,可以在运行命令时通过--set参数临时设置分隔符,命令改成这样:

scrapy runspider Intro_Scrapy.py -o video.csv --set FEED_EXPORT_DELIMITER=';'

这样运行后,这次导出的CSV就会用分号分隔,下次运行默认还是逗号,适合临时调整的场景。

两种方法都是Scrapy官方支持的配置,你可以根据自己的需求选择~

备注:内容来源于stack exchange,提问作者Francisco Augusto Varela Aguir

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.13 18:49:50