Scrapy Shell响应正常但代码无输出,单页爬虫导出CSV为空问题求助
问题根因
Scrapy 对 start_urls 列表中的初始请求,默认会调用名为 parse 的方法处理返回的响应。你修改后的单页爬虫仅定义了 parse_book 解析方法,没有实现默认的 parse 方法,因此请求成功后没有执行数据提取逻辑,最终输出为空。
修复方案
二选一即可:
方案1:修改解析方法名
直接把 parse_book 方法重命名为 parse,匹配 Scrapy 默认回调规则,修改后代码如下:
import scrapy class BookSpider(scrapy.Spider): name = 'book' start_urls = ['https://book24.ru/product/transhumanism-inc-6015821/'] def parse(self, response): yield{ 'name': response.css('h1.product-detail-page__title::text').get(), 'type': response.css('div.product-characteristic__value a::attr(title)')[2].get() }
方案2:显式指定初始请求回调
重写 start_requests 方法,手动指定初始请求的处理函数为 parse_book:
import scrapy class BookSpider(scrapy.Spider): name = 'book' def start_requests(self): yield scrapy.Request( url='https://book24.ru/product/transhumanism-inc-6015821/', callback=self.parse_book ) def parse_book(self, response): yield{ 'name': response.css('h1.product-detail-page__title::text').get(), 'type': response.css('div.product-characteristic__value a::attr(title)')[2].get() }
修改后重新执行 scrapy crawl book -O book.csv 即可正常输出数据。
内容的提问来源于stack exchange,提问作者Полина Ужвак
相关产品推荐
相关产品推荐

