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
相关产品推荐
相关产品推荐

