我整来了几台服务器,就是为了给你演示一下分布式爬虫的整个过程
一般情况下
scrapy是这样的
![](http://n4.ikafan.com/assetsj/blank.gif)
1、调度器 Scheduler 会调度 Requests 队列中的请求
2、然后将每个请求交给下载器 Downloader 下载
3、这时候就会得到相应的 item 数据交给 item Pipeline 处理
![](http://n4.ikafan.com/assetsj/blank.gif)
![](http://n4.ikafan.com/assetsj/blank.gif)
![](http://n4.ikafan.com/assetsj/blank.gif)
![](http://n4.ikafan.com/assetsj/blank.gif)
![](http://n4.ikafan.com/assetsj/blank.gif)
![](http://n4.ikafan.com/assetsj/blank.gif)
![](http://n4.ikafan.com/assetsj/blank.gif)
![](http://n4.ikafan.com/assetsj/blank.gif)
![](http://n4.ikafan.com/assetsj/blank.gif)
![](http://n4.ikafan.com/assetsj/blank.gif)
![](http://n4.ikafan.com/assetsj/blank.gif)
![](http://n4.ikafan.com/assetsj/blank.gif)
接着进入 bin 目录
![](http://n4.ikafan.com/assetsj/blank.gif)
启动 redis
![](http://n4.ikafan.com/assetsj/blank.gif)
没毛病
使用本地连接一下
![](http://n4.ikafan.com/assetsj/blank.gif)
恩~连上了
![](http://n4.ikafan.com/assetsj/blank.gif)
redis 搭建完
接着我们来搭建数据库的服务器
把 MongoDB 给装上
先连接到数据库的服务器上
![](http://n4.ikafan.com/assetsj/blank.gif)
下载 mongoDB
![](http://n4.ikafan.com/assetsj/blank.gif)
![](http://n4.ikafan.com/assetsj/blank.gif)
把解压下来的文件夹
轻轻的移动一下位置
![](http://n4.ikafan.com/assetsj/blank.gif)
创建个 db 文件夹
![](http://n4.ikafan.com/assetsj/blank.gif)
开启 mongodb
这里顺便把 bind_ip 设置一下
这样才能被远程访问
![](http://n4.ikafan.com/assetsj/blank.gif)
往下拉可以看到
mongoDB 监听的是 27017 端口
说明安装和启动成功
![](http://n4.ikafan.com/assetsj/blank.gif)
使用本地连接试试
![](http://n4.ikafan.com/assetsj/blank.gif)
可以可以
![](http://n4.ikafan.com/assetsj/blank.gif)
接着我们需要在
爬虫服务器安装 Python3 环境
![](http://n4.ikafan.com/assetsj/blank.gif)
![](http://n4.ikafan.com/assetsj/blank.gif)
slave-02 和 slave-03 服务器
同上安装 python3
![](http://n4.ikafan.com/assetsj/blank.gif)
ok
环境搭起来了
![](http://n4.ikafan.com/assetsj/blank.gif)
回到我们之前写的代码
使用 scrapy 爬取 stackoverflow 上的所有 Python 问答
我们把它改成适用分布式的
将 Pipeline 中的数据库地址配置成
我们创建的 mongodb 数据库地址
![](http://n4.ikafan.com/assetsj/blank.gif)
接着在 setting 中配置
redis 调度和去重
![](http://n4.ikafan.com/assetsj/blank.gif)
再设置一下延迟访问
![](http://n4.ikafan.com/assetsj/blank.gif)
搞完了之后
将虚拟环境中的库打包一下
![](http://n4.ikafan.com/assetsj/blank.gif)
![](http://n4.ikafan.com/assetsj/blank.gif)
接着把项目
都扔到爬虫服务器上去
![](http://n4.ikafan.com/assetsj/blank.gif)
连接到爬虫服务器
可以看到刚刚传来的文件
![](http://n4.ikafan.com/assetsj/blank.gif)
把刚刚在虚拟环境中
生成的第三方库列表
在服务器上一顿安装
![](http://n4.ikafan.com/assetsj/blank.gif)
其它两台爬虫服务器
和上面一样安装所需要的库
都安装完之后
就终于可以都 TM 跑起来了
![](http://n4.ikafan.com/assetsj/blank.gif)
所有的爬虫
都特么给我跑起来
![](http://n4.ikafan.com/assetsj/blank.gif)
哈哈哈哈哈
4台机器开始一顿爬取
![](http://n4.ikafan.com/assetsj/blank.gif)
可以看到 mongodb 都监听到了
这几台服务器的连接了
![](http://n4.ikafan.com/assetsj/blank.gif)
我们连到 redis 看看
![](http://n4.ikafan.com/assetsj/blank.gif)
可以看到
redis 在调度着请求的消息队列
以及过滤重复的请求
再连接到 mongodb 看看
![](http://n4.ikafan.com/assetsj/blank.gif)
![](http://n4.ikafan.com/assetsj/blank.gif)
小帅b每隔一小会就查询一下
爬取下来的数量
可以看到
速度还是可以的
![](http://n4.ikafan.com/assetsj/blank.gif)
ok
以上就是分布式爬虫的
搭建及部署的过程了
当然了
数据库还可以搭建一下集群
数据库之间的连接最好设置账户
进行安全访问等
主要还是让你了解这个过程中
分布式爬虫的搭建和使用
以及体会它的可扩展性和高效性
那么咱们就到这里了
我们下回见,peace
![](http://n4.ikafan.com/assetsj/blank.gif)
扫一扫
学习 Python 没烦恼