双item插入mysql两表 数量差距过大

来源:6-19 保存数据到mysql中 -1

橘子煲汤

2020-03-06

我的代码逻辑大概是这样的
def parse1()

	yield parse2
	yield parse3
	
def parse2()
	return item1#第一个item
	
def parse3()
	yield parse4

def parse4()
	return item2#第二个item 

然后在每个item中写了get_insert语句 在pipeline中使用了老师提供的异步插入mysql的代码
每个item都对应各自的一张表
但是在爬取了一段时间后 我发现mysql里两张表插入的数据悬殊很大 两表的行数应该是一样的才对

第一个item对应的表插入了27w条数据 而第二个item对应的表只插入了1w多条
我猜测是大量使用了异步的原因 第二个item对应的表很多还没来得及插入 但是我爬取的网站数据量很大 我不可能全都爬完 比如说我只想爬十万条数据 那应该是表1插入十万条以及表2插入十万条数据 这应该是如何做到? 或者对于这种情况老师有什么好的建议?

写回答

1回答

bobby

2020-03-06

可以统计看看是否两个网址的抓取的数量确实是一致的? 课程后面有讲解如何获取内部变量

0
2
bobby
回复
橘子煲汤
你这个控制属于非常细的控制力度了,如果数据一旦进入队列中了 那么你想要调整顺序就不行,不过scrapy内部有变量知道item的数量达到多少了,但是你要区分每种item到了多少了那么就要你自己写逻辑来控制了,如果想要做到你这种控制 那么一个队列满足不了你的需求,你可能需要两个队列来控制了,而且要研究一下scrapy-redis的源码 因为你得改scheduler的源码
2020-03-08
共2条回复

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

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

5796 学习 · 6290 问题

查看课程