scrapy_redis分布式

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/lipachong/article/details/102485984

想做一下高大上的scrapy_redis爬虫程序,又觉得我这种水货做不来,后来各种查教程,试验,还算做出来一个像分布式的东西,不过还是记录一下,反正开几个终端模拟分布式,数据库里的数据确实没重复的,也能凑乎着用吧

首先搭建scrapy,额。。反正就是先别管啥分布式,做一个scrapy爬虫出来再说。
当你的scrapy爬虫能运行成功,数据库里能有数据的时候,改成分布式,
settings.py文件最后加这么一段话:

DUPEFILTER_CLASS="scrapy_redis.dupefilter.RFPDupeFilter"
SCHEDULER="scrapy_redis.scheduler.Scheduler"
#默认为False,会在爬取完成后清空爬取队列和去重指纹集合。如果不想清空它们,就设置为True:
SCHEDULER_PERSIST=True
REDIS_URL="redis://127.0.0.1:6379"

#  同时为保证能够把数据同时存储到sql中我们还要设置相关pipline
ITEM_PIPELINES={
	#这个是你之前的scrapy爬虫管道的设置,从上面移下来就好了,注意权重优先级要低于redis管道
    'test_scarpy_redis.pipelines.TestScarpyRedisPipeline':500,
    #这个是redis数据库的管道设置,pipline.py文件里不用写redis数据库操作,人家封装好了,我们把管道接上就行了。当然,你想存sql或者mongo的话,pipline.py里面要写sql或者mongo的数据库操作
    'scrapy_redis.pipelines.RedisPipeline':400
}

这段设置代码加完之后再运行你的爬虫,你的sql(mongo)和redis库里就有数据了,把它部署到不同的电脑上运行,就是分布式了。同一台电脑开多个终端运行也算模拟分布式了,可以用来试验。
redis库中会出现三个字段:
在这里插入图片描述
蓝框里面的就是数据了,其他两个好像是dupefilter是用来存储抓取过的url的指纹,是防止重复抓取的,requests里是存的待爬url.

猜你喜欢

转载自blog.csdn.net/lipachong/article/details/102485984