说说分布式爬虫



我们大多时候玩的爬虫

都是运行在自己的机子



之前

我们为了提高爬虫的效率

说过多进程相关的



今天

小帅b想跟你聊聊

分布式爬虫



python


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

python



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


什么是分布式?


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



python




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



python



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


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


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


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



python




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


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


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


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



python




这就是所谓的
分布式



python



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


也就是所谓的
单机爬虫


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


python



python




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


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


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


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



python



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


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


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


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


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


那么我们下回见
peace


python

扫一扫

学习 Python 没烦恼


python





























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

原文始发于微信公众号(学习python的正确姿势):python

发表回复