为什么我的Scrapy CrawlSpider无法收集链接、无报错退出且无任何结果?
代码问题排查及修复方案
核心错误点
- 缩进错误(直接导致无输出终止):
rules爬取规则、parse_item回调方法都定义在爬虫类的外部,CrawlSpider仅会读取类内部声明的rules属性执行爬取逻辑,找不到规则时爬虫访问完起始页后就会直接结束,不会有后续采集动作。 - CSS选择器语法错误:
::attr("href")中的"是HTML转义引号,不能直接写在Python代码中,会导致匹配不到链接属性。 - 缺失依赖导入:代码中使用了
Product类但没有对应的导入语句,解析逻辑执行时会触发名称错误。
修复后代码示例
from scrapy.spiders import CrawlSpider, Rule from scrapy.linkextractors import LinkExtractor # 替换为自身项目Product类的实际导入路径 from your_project.items import Product class FagorelectrodomesticoSpider(CrawlSpider): name = 'fagorelectrodomestico.com' allowed_domains = ['fagorelectrodomestico.com'] start_urls = ['https://fagorelectrodomestico.com'] rules = ( Rule(LinkExtractor(allow='product/'), callback='parse_item', follow=True), ) def parse_item(self, response): for doc in response.css('a.file'): doclink = doc.css('::attr(href)').get() product = Product() product['model'] = response.css('h2.data__symbol::text').get() product['brand'] = 'Fagor' product['file_urls'] = [doclink] yield product
额外调试建议
如果修复后仍无采集结果,可按以下步骤排查:
- 用
scrapy shell https://fagorelectrodomestico.com测试是否能正常请求目标站点,确认是否存在反爬拦截 - 在shell中执行
LinkExtractor(allow='product/').extract_links(response),确认起始页是否存在匹配规则的产品链接 - 进入产品页后测试css选择器是否能匹配到对应的元素内容
内容的提问来源于stack exchange,提问作者user461101
相关产品推荐
相关产品推荐

