当前位置: 首页 > news >正文

宁波网络营销方式南昌做seo的公司有哪些

宁波网络营销方式,南昌做seo的公司有哪些,七牛云wordpress图片,织梦添加网站名称添加新变量Scrapy 和 scrapy-redis的区别 Scrapy 是一个通用的爬虫框架,但是不支持分布式,Scrapy-redis是为了更方便地实现Scrapy分布式爬取,而提供了一些以redis为基础的组件(仅有组件)。 pip install scrapy-redis Scrapy-redis提供了下面四种组件&a…

Scrapy 和 scrapy-redis的区别

Scrapy 是一个通用的爬虫框架,但是不支持分布式,Scrapy-redis是为了更方便地实现Scrapy分布式爬取,而提供了一些以redis为基础的组件(仅有组件)。

pip install scrapy-redis

Scrapy-redis提供了下面四种组件(components):(四种组件意味着这四个模块都要做相应的修改)

  • Scheduler
  • Duplication Filter
  • Item Pipeline
  • Base Spider

scrapy-redis架构

如上图所⽰示,scrapy-redis在scrapy的架构上增加了redis,基于redis的特性拓展了如下组件:

Scheduler

Scrapy改造了python本来的collection.deque(双向队列)形成了自己的Scrapy queue(https://github.com/scrapy/queuelib/blob/master/queuelib/queue.py)),但是Scrapy多个spider不能共享待爬取队列Scrapy queue, 即Scrapy本身不支持爬虫分布式,scrapy-redis 的解决是把这个Scrapy queue换成redis数据库(也是指redis队列),从同一个redis-server存放要爬取的request,便能让多个spider去同一个数据库里读取。

Scrapy中跟“待爬队列”直接相关的就是调度器Scheduler,它负责对新的request进行入列操作(加入Scrapy queue),取出下一个要爬取的request(从Scrapy queue中取出)等操作。它把待爬队列按照优先级建立了一个字典结构,比如:

    {优先级0 : 队列0优先级1 : 队列1优先级2 : 队列2}

然后根据request中的优先级,来决定该入哪个队列,出列时则按优先级较小的优先出列。为了管理这个比较高级的队列字典,Scheduler需要提供一系列的方法。但是原来的Scheduler已经无法使用,所以使用Scrapy-redis的scheduler组件。

Duplication Filter

Scrapy中用集合实现这个request去重功能,Scrapy中把已经发送的request指纹放入到一个集合中,把下一个request的指纹拿到集合中比对,如果该指纹存在于集合中,说明这个request发送过了,如果没有则继续操作。这个核心的判重功能是这样实现的:

    def request_seen(self, request):# 把请求转化为指纹  fp = self.request_fingerprint(request)# 这就是判重的核心操作  ,self.fingerprints就是指纹集合if fp in self.fingerprints:return True  #直接返回self.fingerprints.add(fp) #如果不在,就添加进去指纹集合if self.file:self.file.write(fp + os.linesep)

在scrapy-redis中去重是由Duplication Filter组件来实现的,它通过redis的set 不重复的特性,巧妙的实现了Duplication Filter去重。scrapy-redis调度器从引擎接受request,将request的指纹存⼊redis的set检查是否重复,并将不重复的request push写⼊redis的 request queue。

引擎请求request(Spider发出的)时,调度器从redis的request queue队列⾥里根据优先级pop 出⼀个request 返回给引擎,引擎将此request发给spider处理。

Item Pipeline

引擎将(Spider返回的)爬取到的Item给Item Pipeline,scrapy-redis 的Item Pipeline将爬取到的 Item 存⼊redis的 items queue。

修改过Item Pipeline可以很方便的根据 key 从 items queue 提取item,从⽽实现 items processes集群。

Base Spider

不在使用scrapy原有的Spider类,重写的RedisSpider继承了Spider和RedisMixin这两个类,RedisMixin是用来从redis读取url的类。

当我们生成一个Spider继承RedisSpider时,调用setup_redis函数,这个函数会去连接redis数据库,然后会设置signals(信号):

  • 一个是当spider空闲时候的signal,会调用spider_idle函数,这个函数调用schedule_next_request函数,保证spider是一直活着的状态,并且抛出DontCloseSpider异常。

  • 一个是当抓到一个item时的signal,会调用item_scraped函数,这个函数会调用schedule_next_request函数,获取下一个request。

http://www.yayakq.cn/news/726321/

相关文章:

  • 大岭山东莞网站建设windows软件开发工具
  • 阿里云网站建设方案书中山市郑州建设信息网打不开
  • 网站是用dreamer做的_为什么后台能进去前台进不去了山东德州网站建设哪家便宜
  • 网站开发需解决的难题页面跳转的方式
  • dede做网站建模网站素材
  • 物流好的网站模板做php网站用什么软件开发
  • 远程医疗型网站开发龙岩微信网站建设
  • 免费下载设计素材网站WordPress集成tipask
  • 企业网站需要哪些模块营销推广有哪些
  • 山西省建设银行网站个人网站可以做商城吗
  • 公司网站制作都需要图片如何申请开公司
  • 做美图网站有哪些东西吗做网站页面报价
  • 做网站建设注册商标是多少类如何下载ppt免费模板
  • 网站制作费计入哪个科目机械外协加工网最新订单
  • 小红书网站建设内容外国黄冈网站推广软件
  • 下沙做网站的公司苏州做网站公司乛 苏州聚尚网络
  • 网站建设的建议例子友情链接例子
  • 网站建设流程包括哪些简单做网站的软件
  • 怎么注册网站域名公司商城网站开发费做什么科目
  • 广州房地产网站建设工商查询官网入口查询
  • 怎么把网站整站下载免费微网站开发
  • 西餐厅网站模板互联网营销的方式有哪些
  • 西安模板建网站最新新闻热点事件50字
  • 营销网站做推广网页游戏开发入门
  • 济南富新网站建设wordpress导航菜单居中
  • 基金会网站建设网站标题会影响吗
  • 网站运营的作用关于做好学院网站建设的要求
  • 外卖网站 模板wordpress class类
  • 网站推广的基本方法有哪些wordpress怎么添加悬浮宠物
  • 二手交易平台 网站开发网站建设肆金手指排名4