Scrapy是一个强大的Python爬虫框架,但是在大数据爬取时,单机爬虫无法满足需求。因此,爬虫集群、分布式爬虫成为了可选方案。scrapy_redis是常用的Scrapy分布式爬虫框架,它基于Scrapy和redis,可以支持高并发、分布式爬虫,提高爬取效率。
Scrapy_redis架构
Scrapy_redis架构如下图所示:
![Scrapy_redis架构图](https://img-blog.csdn.net/20180731170523909?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2luZGV4X2Jsb2c=)
Scrapy_redis分为master和slave两个部分。master部分包括Scheduler、Duplication Filter和Redis Server。Scheduler接收spider发来的请求,然后放入Redis Queue中。当slave抓取到新的数据时,将数据返回给Redis Server。如果有重复的请求,Duplication Filter会剔除它们。slave端包含Downloader和spider。Downloader从redis server中取出请求,下载并把结果存入redis server。spider从redis Queue中取出请求,构成需要爬取的URL,通过start_urls搭建请求。
Scrapy_redis的优点
1. 高度可扩展:基于分布式进行开发,使Scrapy_redis很容易通过增加机器来支持整个网站优化抓取。
2. 支持自定义分布式爬虫:Scrapy_redis可以让用户自定义它们自己的分布式抓取策略。抓取策略是指定如何抓取和存储抓取数据的一种方式。
3. 支持各种存储方式: Scrapy_redis支持多种分布式存储方式,如redis、MongoDB等。这使得它非常灵活可以根据不同的需求来使用不同的存储方式。
Scrapy_redis的使用
1. 安装Scrapy_redis:可以通过pip install scrapy_redis来安装,或通过github源码下载并安装。
2. 创建Scrapy工程:可以通过startproject来创建,比如:
```
scrapy startproject myproject
```
3. 修改settings.py:需要在其中加入如下代码:
```
SCHEDULER = "scrapy_redis.scheduler.Scheduler"
DUPEFILTER_CLASS = "scrapy_redis.dupefilter.RFPDupeFilter"
ITEM_PIPELINES = {
'scrapy_redis.pipelines.RedisPipeline': 300
}
SCHEDULER_PERSIST = True
REDIS_HOST = 'localhost'
REDIS_PORT = 6379
```
4. 构建spider:
```
import scrapy
from scrapy_redis.spiders import RedisSpider
class MySpider(RedisSpider):
name = 'myspider'
redis_key = 'myspider:start_urls'
def parse(self, response):
# do something here
pass
```
5. 运行爬虫:首先需要启动redis-server,然后通过如下命令启动爬虫:
```
scrapy crawl myspider
```
如果要启动多个爬虫进程,需要使用如下命令:
```
scrapy crawl myspider -s JOBDIR=crawls/spider1
```
6. 监视分布式爬虫:通过在redis-cli中执行如下命令来查看Redis中的URL和response:
```
lrange mysider:items 0 10
lrange mysider:requests 0 10
```
通过如上命令可以检视scrpay_redis的运行状态。
总结
Scrapy_redis是基于Scrapy的分布式爬虫,桥接Redis和Scrapy,使得Scrapy表现出良好的扩展性,灵敏度非常高。Scrapy_redis的启动过程比传统爬虫的启动过程更加复杂,但总的来说Scrapy_redis的可扩展性、性能、灵活性和可靠性都非常高,非常适合爬取数据量大、需要分布式爬虫的网站。
购买后如果没出现相关链接,请刷新当前页面!!!
链接失效的请留言 ,我看见了就补上!!!
网站内容来源于互联网,我们将这些信息转载出来的初衷在于分享与学习,这并不意味着我们站点对这些信息的观点或真实性作出认可,我们也不承担对这些信息的责任。
适度游戏益脑,沉迷游戏伤身。 合理安排时间,享受健康生活。适龄提示:适合18岁以上使用!
发表评论 取消回复