分享

说说分布式爬虫

 小帅b 2021-10-12

我们大多时候玩的爬虫

都是运行在自己的机子

之前

我们为了提高爬虫的效率

说过多进程相关的

今天

小帅b想跟你聊聊

分布式爬虫





那么接下来就是
学习 Python 的正确姿势

在此之前
我们先来了解一下


什么是分布式?


你开发一个网站
想要给别人访问
就需要把网站部署到服务器






当网站用户增多的时候
一个服务器就不满足需求了
于是就会把网站部署到多个服务器上





这种情况通常叫集群
就是把整个网站的所有功能
都同时部署到不同的服务器上
一般会使用 ngnix 作负载均衡


不过
有些功能并发量并不是很高
比如一些后台的管理


所以就有人想
要不然把这个网站的
功能都拆分出来


让每一个模块只负责具体的功能
比如登录模块,内容管理模块等






然后在部署的时候
把一些并发量大的模块
部署到多个服务器就行了
耦合度大大的降低了


并发量小的模块
也不会浪费那么多资源了


当然
这时需要让模块与模块之间产生联系


也就是调度好它们
一般会用到消息队列






这就是所谓的
分布式






对于一些数据不大的数据
我们的爬虫一般是直接在电脑运行了


也就是所谓的
单机爬虫


而分布式爬虫
说白了
就是把爬虫的关键功能
以我们刚说的分布式形式
部署到多台机器上
然后一起盘(爬)它








那么如何将爬虫之间联系起来呢
我们可以使用 Redis 的消息队列
进行调度(schedule)


之前我们也有说过 redis
它是一个读写速度快的
缓存数据库


还提供了类似 Python 的
list、set 等数据结构


而且它还可以将内存的数据写到磁盘
性能杠杠的






在 scrapy 框架里面
就有一个 scrapy-redis
专门用它来调度爬虫的


它可以将请求的 url 放到
redis 的消息队列里面


然后用 spider 模块
将数据给结构化抽出来
放到 redis 数据库里面去


当然,分布式爬虫
有时候还会结合数据库集群爬取数据


ok,以上
主要让你了解一下分布式
下次有时间小帅b考虑
弄个小例子来体现一下


那么我们下回见
peace


扫一扫

学习 Python 没烦恼





























什么?
分布式?
先看看你家的网站有没 10 个并发再说吧...

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多