栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

谈一下分布式爬虫

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

谈一下分布式爬虫

一、什么是分布式爬虫?

      一般的爬虫是在一台机器上进行爬取某个网站的数据,分布式爬虫是多台机器上同时爬取某个网站的数据。如下图所示:

 二、如何实现分布式爬取

1.对于实现分布式爬取的疑问:

疑问1:

分布式爬虫是好几台机器在同时运行,如何保证不同的机器爬取页面的时候不会出现重复爬取的问题。

如果出现重复爬取,那么本质还是在一台机器上的爬虫。

疑问2:

分布式爬虫在不同的机器上运行,在把数据爬完后如何保证保存在同一个地方。

如果不能保存到同一个地方,数据储存就会出现问题。

2.问题的解决:

疑问1的解决:      

找到一个中间商,这个中间商负责所有要获取url的分发,保证url不会被重复爬取。

疑问2的解决:

找到一个中间商,数据都储存在中间商那里,保证数据不会被重复存储。

3.中间商是什么?

一个强大的非关系型数据库:Redis。

三、Redis简介

      Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库。

      用大白话来说,Redis储存的数据就像字典一样,都是以键值对的形式存在的。

 Redis特点:

 多台机器间共享数据。

两个疑问: 

1.分布式爬虫是好几台机器在同时运行,如何保证不同的机器爬取页面的时候不会出现重复爬取的问题。

2.分布式爬虫在不同的机器上运行,在把数据爬完后如何保证保存在同一个地方。

 因为Redis可以在多台机器间共享数据:

对于第1个疑问:在使用的时候,redis可以判断出来这个url是否被获取过,如果获取过了,那就不再分给其他的机器,如果没有获取过,那就分给其他机器。【成功解决不会重复爬取的问题】

对于第2个疑问:Redis具有数据存储的功能,可以存储从不同机器爬取到的数据。

所以实现分布式爬虫的关键点:使用Redis作为中间商来协调数据与存储数据。

四、如何实现分布式爬虫

      由于Scrapy本身并不具备分布式的功能,所以在这里需要安装【Scrapy-Redis】组件,这个组件正是利用了Redis可以分布式的功能,集成到Scrapy框架中,使得爬虫可以进行分布式。

1.Scrapy-Redis的安装:

pip install scrapy-redis==0.7.1

2.Scrapy-Redis架构图:

【Scrapy架构图】

 

 

 【Scrapy-Redis架构图】

 

 3.分布式爬虫架构图

 

 五、分布式爬虫的优点:
  1. 多台机器同时爬取,数据获取效率更高。
  2. 可以充分利用多台机器的带宽。
  3. 可以充分利用多台机器的ip地址。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/323637.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号