O princípio do rastreador distribuído scrapy-redis e sua diferença com o scrapy

Scrapy é uma estrutura de crawler geral, mas não oferece suporte a
Scrapy-redis distribuído para implementar mais facilmente o rastreamento distribuído de Scrapy e fornece alguns componentes baseados em redis (somente componentes)

scrapy任务调度是基于文件系统,这样只能在单机执行crawl。

scrapy-redis将待抓取request请求信息和数据items信息的存取放到redis queue里,使多台服务器可以**同时执行crawl和items process**,大大提升了数据爬取和处理的效率。

Distribuído adota uma estrutura mestre-escravo para configurar um servidor mestre e vários servidores escravos. O lado mestre gerencia o banco de dados Redis e as tarefas de download distribuídas. O Slave implanta rastreadores Scrapy para extrair páginas da Web e analisar e extrair dados. Os dados analisados ​​finais são armazenados no mesmo banco de dados MongoDb.

实现原理
通过scrapy写了一个工程之后,是不能同时让两个电脑共同爬取
为什么不能呢?
因为你的scrapy运行在你的电脑的内存中,你的调度器运行在你的内存中。我的调度器运行在我的内存中
将**调度器**放到公共的地方,redis中,都放到我的redis中

实现结果:
我的windows:是服务端(redis放的地方,调度器),也是客户端
大家的windows:都是客户端

如何实现?
基于scrapy的组件,scrapy-redis组件
(1)调度器放到了redis中
(2)实现了一个管道,保存到redis中
(3)重写了两个类Spider(RedisSpider),CrawlSpider(RedisCrawlSpider)

pip install scrapy-redis
Insira a descrição da imagem aqui
Insira a descrição da imagem aqui
scrapy-redis Scheduler habilmente realiza a eliminação da duplicação do Filtro de Duplicação (o conjunto DupeFilter armazena solicitações rastreadas) por meio do recurso exclusivo do conjunto redis.
Para a solicitação recém-gerada do Spider, a impressão digital da solicitação é enviada ao conjunto DupeFilter de redis para verificar se ela está duplicada e o push de solicitação não duplicado é gravado na fila de solicitações de redis.
O agendador tira uma solicitação da fila de solicitações do redis a cada vez, de acordo com a prioridade, e envia a solicitação ao spider para processamento.
Envie os itens rastreados pelo spider para o pipeline de itens do scrapy-redis e armazene os itens rastreados na fila de itens do redis. É fácil extrair itens da fila de itens para realizar os processos de itens cluster
summary
scrapy-redis habilmente usa redis para implementar a fila de pedidos e itens , usa redis set para obter a desduplicação de pedidos e expande o scrapy de uma única máquina para várias Máquina para obter um cluster de rastreador em maior escala
Artigo de referência
https://piaosanlang.gitbooks.io/spiders/07day/section7.3.html

Acho que você gosta

Origin blog.csdn.net/weixin_42540340/article/details/105099541
Recomendado
Clasificación