Scrapy新版Item Exporter使用FEEDS配置无输出如何解决
问题排查及解决方法
- 路径配置错误
你此前使用的旧配置用的是相对路径raw/kenpom_{year}.json,新配置的FEEDS里写的是固定绝对路径/path/to/items.json,先确认该路径对应的父目录存在且你有写入权限。如果需要和之前一样生成带年份动态命名的文件,不要把FEEDS写死在爬虫的静态custom_settings里。 - 配置优先级不匹配
你用的是CrawlerProcess动态传入settings的运行方式,Scrapy中直接传入CrawlerProcess的配置优先级高于爬虫类的custom_settings。如果你仅把FEEDS写在了爬虫类的custom_settings里,而外部传入的settings没有对应配置,就会出现配置不生效的问题。调整写法如下:
def _scrape_kenpom_rankings(year): settings = get_project_settings() # 直接把FEEDS配置写到传入CrawlerProcess的settings中 settings.set('FEEDS', { f'raw/kenpom_{year}.json': { 'format': 'jsonlines', 'encoding': 'utf8', 'store_empty': False, 'indent': 4, 'overwrite': True } }) process = CrawlerProcess(settings) process.crawl(KenpomRankingsSpider, year) process.start()
- 空爬取不生成文件
你配置了store_empty': False,如果爬虫运行过程中没有yield任何Item/字典数据,Scrapy就不会生成输出文件。可以临时把该参数改为True测试,确认是配置问题还是爬虫本身没有爬到数据。 - 版本兼容性问题
FEEDS配置是Scrapy 2.1版本才正式支持的配置项,确认你当前安装的Scrapy版本≥2.1,版本过低的话升级Scrapy即可。 - 爬虫逻辑问题
确认你的爬虫parse方法中正确yield了爬取到的数据,只有被yield的Item/字典才会被Feed Exporter处理写入文件。
内容的提问来源于stack exchange,提问作者Evan Zamir
相关产品推荐
相关产品推荐

