一般情况下
scrapy是这样的

可以看到1、调度器 Scheduler 会调度 Requests 队列中的请求2、然后将每个请求交给下载器 Downloader 下载3、这时候就会得到相应的 item 数据交给 item Pipeline 处理
如果我们希望有多个爬虫
来爬取一个网站的数据
那么我们的请求队列就要共享而不能说都是 Request 队列要不然爬到的数据就都乱套了

所以我们需要一个共享的队列
就比如说你希望一块蛋糕能被快速吃掉
你叫来了小明
可是小明只有一张嘴啊
于是你又叫来了他的 py 们小红和小紫

但是你总不能说给他们每人各一块蛋糕吧
你是希望一块蛋糕被快速吃掉
你要他们 3 张嘴一起吃掉 同一块蛋糕
你把他们的嘴比作爬虫
把蛋糕比作要爬取的网站
是不是就比较容易理解了

那么多个爬虫如何共享一个请求队列以及如何搭建分布式部署爬虫呢
接下来就是学习 Python 的正确姿势

我们需要用到 redis 队列来共享
巧的是scrapy-redis这个库就可以使用 redis 队列

在此之前我们先搞几台服务器一台用来搭建 redis一台用来搭建数据库再搞三台来运行爬虫
服务器买起

别问我哪来这么多服务器
有钱任性(良心帅b喊起来)

服务器有了搭建起来呗先把 redis 装上
连接到 redis 服务器

下载 redis

解压到 /usr/local 下

解压完之后
进入

安装一波

安装完之后可以顺便复制一下 redis 所需的配置文件

接着进入 bin 目录

启动 redis

没毛病
使用本地连接一下

恩~连上了

redis 搭建完
接着我们来搭建数据库的服务器把 MongoDB 给装上
先连接到数据库的服务器上

下载 mongoDB

解压一波

把解压下来的文件夹
轻轻的移动一下位置

创建个 db 文件夹

开启 mongodb
这里顺便把 bind_ip 设置一下
这样才能被远程访问

往下拉可以看到
mongoDB 监听的是 27017 端口
说明安装和启动成功

使用本地连接试试

可以可以

接着我们需要在
爬虫服务器安装 Python3 环境

slave-02 和 slave-03 服务器
同上安装 python3

ok
环境搭起来了

回到我们之前写的代码
使用 scrapy 爬取 stackoverflow 上的所有 Python 问答
我们把它改成适用分布式的
将 Pipeline 中的数据库地址配置成
我们创建的 mongodb 数据库地址

接着在 setting 中配置
redis 调度和去重

再设置一下延迟访问

搞完了之后
将虚拟环境中的库打包一下

接着把项目
都扔到爬虫服务器上去

连接到爬虫服务器
可以看到刚刚传来的文件

把刚刚在虚拟环境中
生成的第三方库列表
在服务器上一顿安装

其它两台爬虫服务器
和上面一样安装所需要的库
都安装完之后
就终于可以都 TM 跑起来了

所有的爬虫
都特么给我跑起来

哈哈哈哈哈
4台机器开始一顿爬取

可以看到 mongodb 都监听到了
这几台服务器的连接了

我们连到 redis 看看

可以看到
redis 在调度着请求的消息队列
以及过滤重复的请求
再连接到 mongodb 看看

小帅b每隔一小会就查询一下
爬取下来的数量
可以看到
速度还是可以的

ok
以上就是分布式爬虫的
搭建及部署的过程了
当然了
数据库还可以搭建一下集群
数据库之间的连接最好设置账户
进行安全访问等
主要还是让你了解这个过程中
分布式爬虫的搭建和使用
以及体会它的可扩展性和高效性
那么咱们就到这里了
我们下回见,peace

扫一扫学习 Python 没烦恼

阅读原文

爬虫运行成功但没数据_我整来了几台服务器,就是为了给你演示一下分布式爬虫的整个过程...相关推荐

  1. 2台mysql集群_如何安装配置基于2台服务器的MySQL集群

    这篇文章旨在介绍如何安装配置基于2台服务器的MySQL集群.并且实现任意一台服务器出现问题或宕机时MySQL依然能够继续运行. 注意!虽然这是基于2台服务器的MySQL集群,但也必须有额外的第三台服务 ...

  2. hexo部署成功但是没效果_使用 Hexo+GitHub 搭建个人免费博客教程(小白向)

    前言 近些年来很多用户都喜欢使用 GitHub Pages 来搭建 Hexo 静态博客网站,其最吸引人的莫过于完全免费使用,并且非常稳定. 虽然搭建时比较麻烦,有点折腾,但是配置完成后,基本不需要操心 ...

  3. 运行gclient一直没反应_安川变频器通电没反应维修措施分享

    安川变频器通电没反应维修措施分享 它们的光敏三极管部分使变频器UF3和UF4的降速端子X2同时得到信号,电动机M3和M4同时降速.(1)???????单台微调??单台微调分别由按钮开关SBSB12(1 ...

  4. navicat导入成功但是没有数据_数据库能建立成功,但是还报错,应该怎么处理...

    工作环境:MySql5.7 [SQL]create DATABASE mytest;受影响的行: 1时间: 0.001s[Err] 1055 - Expression #1 of ORDER BY c ...

  5. python爬虫大作业爬多少数据_爬虫大作业

    1.选一个自己感兴趣的主题(所有人不能雷同). 2.用python 编写爬虫程序,从网络上爬取相关主题的数据. 3.对爬了的数据进行文本分析,生成词云. 4.对文本分析结果进行解释说明. 5.写一篇完 ...

  6. python爬虫 django搜索修改更新数据_一文搞懂Django数据库查询操作

    本文略长,读完约需十分钟.当做复习笔记效果更佳. 查询操作: 数据查询是数据库操作中一个非常重要的技术.查询一般就是使用filter.exclude以及get三个方法来实现.我们可以在调用这些方法的时 ...

  7. uniapp微信小程序运行成功但是没调用微信开发者工具

    先看运行里面的运行设置,开发者本地的地址是否是好的 然后看微信开发者工具里面的设置,找到安全设置,打开服务端口,这样工具就可以被命令行和http调用了

  8. 海牛大数据教你Hadoop 如何批量操作多台服务器

    原文地址:http://hainiubl.com/topics/80#reply42 1. 每个虚拟机设置静态IP cd /etc/sysconfig/network-scripts/ ifconfi ...

  9. 大数据工具使用——安装Hadoop(多台服务器)和Hive、Hbase

    1.配置环境版本 资料上传百度云,自取:链接:https://pan.baidu.com/s/1evVp5Zk0_X7VdjKlHGkYCw 提取码:ypti  复制这段内容后打开百度网盘手机App, ...

最新文章

  1. Oracle Start With关键字
  2. jenkins和docker实现自动化构建部署
  3. 老外听到哪些中式英文是崩溃的?(转自外贸Jackson)
  4. JAVA---DOS命令学习
  5. Centos7构建NFS服务器和连接
  6. 无公网ip远程访问调试-内网穿透工具
  7. java编写八数码_java实现八数码
  8. android lottie字体json,Android Lottie集成及基本用法
  9. 【3D动态脑图制作软件】万彩脑图大师教程 | 将思维导图输出到云服务
  10. https双向认证java
  11. 靶机Who Wants To Be King 1渗透记录
  12. 2022江苏最新八大员之(安全员)模拟考试试题及答案
  13. linux下安装python3出现无configure_Linux下安装Python3.9.0
  14. Nightingale 滴滴夜莺 运维监控-快速开始
  15. tableau 集动作_Tableau训练营:7天,每天30分钟,零基础get数据可视化基本姿势
  16. MT6129射频处理器,MT6129芯片原理资料介绍
  17. 一篇文章看懂如何转行产品经理
  18. 万石谷,粒粒积累;千丈布,根根织成 ——随笔第二弹
  19. 怎么找属于自己最优的2B增长模型?
  20. LATEX编辑高数基础公式

热门文章

  1. 【贪心+双指针】LeetCode 11. Container With Most Water
  2. 【格雷码】LeetCode 89. Gray Code
  3. ubuntu16.04安装百度网盘(使用deepin-wine)2019年3月亲测可用以及安装MATLAB的技巧
  4. Taints和Tolerations联用,将pod部署到k8s的master节点
  5. 函数名、闭包及迭代器
  6. 使用spark-shell从本地读取文件不成功的的操作。
  7. 软件定义网络(SDN)研究进展
  8. 三种方法实现二分查找
  9. AForge.net简介和认识
  10. JavaWeb之Servlet:Cookie 和 Session