在解析的过程,有多个url被yield跟进爬取时,如何保证都解析完成,才被yield给pipelines

来源:6-17 知乎spider爬虫逻辑的实现以及answer的提取 - 1

慕尼黑7546459

2019-12-26

老师,如下图,在解析的过程中,有多个被yield出去的url, 我现在是 callback=self.parse_celebrities 的 parse_celebrities方法中yield yield movie_item交给pipelines。
发现 【获奖情况】 获 【短评】的信息还没被解析完,就执行到pipelines了,导致最终保存时数据缺失,对于这种情况,如何保证都解析完了,才会提交到pipelines呢?图片描述

写回答

1回答

bobby

2019-12-27

只有yield出去item的时候才会进入pipeline,你这里是yield的request是不会进入pipeline的,获奖短评是在parse_celebrities中解析的吗?

0
2
bobby
回复
慕尼黑7546459
这个简单啊,你在parse_detail中将获奖情况的解析交给callback= parse_awards ,但是跟进爬取【短评】应该在parse_awards 中完成也就是抓取完获奖情况后才抓取短评,后续的演员表也是应该在parse_comments 解析完成以后才能进行。最后的item在parse_celebrities 之后进行,这样就能保证顺序了
2019-12-29
共2条回复

Scrapy打造搜索引擎 畅销4年的Python分布式爬虫课

带你彻底掌握Scrapy,用Django+Elasticsearch搭建搜索引擎

5795 学习 · 6290 问题

查看课程