如何编写分布式爬虫

如何编写分布式爬虫一、更改父类为redis的类1、将爬虫的类从scrapy.Spider变成scrapy_redis.spiders.RedisSpider;2、或者是从scrapy.CrawlSpider变成scrapy_redis.spiders.RedisCrawlSpider。fromscrapy_redis.spidersimportRedisCrawlSpider以Crawlspider为例:二、调整起始url1.将爬虫中的start_urls删掉。2.增加一个redi.

大家好,欢迎来到IT知识分享网。

一、更改父类为redis的类

1、将爬虫的类从scrapy.Spider变成scrapy_redis.spiders.RedisSpider

2、或者是从scrapy.CrawlSpider变成scrapy_redis.spiders.RedisCrawlSpider

from scrapy_redis.spiders import  RedisCrawlSpider

以Crawlspider为例:

如何编写分布式爬虫

二、调整起始url

 1.将爬虫中的start_urls删掉。

2.增加一个redis_key=”xxx”。这个redis_key是为了以后在redis中控制爬虫启动的。爬虫的第一个url,就是在redis中通过这个发送出去的。

以Crawlspider为例:

redis_key = "dytt:start_url"

如何编写分布式爬虫

 三、调整配置文件

# Scrapy-Redis相关配置
# 利用scrapy_redis的调度确保request存储到redis中,起到中间商的作用
# 【无需修改】
SCHEDULER = "scrapy_redis.scheduler.Scheduler"

# 确保所有爬虫共享相同的去重指纹,保证所有数据去重使用
# 【无需修改】
DUPEFILTER_CLASS = "scrapy_redis.dupefilter.RFPDupeFilter"

# 设置redis为item pipeline,不再使用scrapy自带的pipeline
# 【无需修改】
ITEM_PIPELINES = {
    'scrapy_redis.pipelines.RedisPipeline': 300
}

# 在redis中保持scrapy-redis用到的队列,不会清理redis中的队列,从而可以实现暂停和恢复的功能。
# 【最好保持开启,无需修改】
SCHEDULER_PERSIST = True

# 设置连接redis信息:
# REDIS_HOST:Redis服务器的ip,根据自己启动的redis服务器的ip【自行修改】
# REDIS_PORT:Redis服务器的端口,默认6379 【不要修改,且无需修改】
REDIS_HOST = '192.168.0.108'
REDIS_PORT = 6379

四、启动分布式爬虫

1.启动Redis服务器

redis-server.exe redis.windows.conf

2、启动scrapy-redis爬虫

进入爬虫文件所在的路径,然后输入命令:scrapy runspider [爬虫名字]。

举例:

scrapy runspider dytt2_.py

3.打开一个redis客户端,lpush起始url

redis-cli
lpush [redis_key] start_url

举例:

# 启动redis客户端
redis-cli

# lpush起始url
lpush dytt:start_url https://dytt8.net/html/gndy/dyzz/list_23_1.html

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/15824.html

(0)

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信