专栏首页JAVAandPython君Python爬虫| 不会分布式爬虫?带你一步一步写!

Python爬虫| 不会分布式爬虫?带你一步一步写!

首先,什么是分布式爬虫?其实简单粗暴一点解释就是我们平时写的爬虫都是孤军奋战,分布式爬虫就是一支军队作战。专业点来说就是应用多台机器同时实现爬虫任务,这多台机器上的爬虫,就是称作分布式爬虫。

分布式爬虫的难点不在于他本身有多难写,而是在于多台机器之间的通信。相信看过我们公众号python爬虫内容的朋友,对于爬虫的编写应该不成问题,那么通信怎么解决呢?

我会通过分布式爬虫这一系列文章一一给大家讲解,整个系列大概有3-4篇文章,我会持续进行更新,也希望大家持续关注我的公众号。

今天,主要给大家讲讲分布式爬虫的实现原理以及基础。

分布式爬虫有很多种架构方式,下面给大家列举出几种比较常见的方式:

1 、多台真实机器+爬虫(如 Urllib 、 Scrapy 等)+任务共享中心

2 、多台虚拟机器(或者部分虚拟部分真实)+爬虫(如 Urllib 、 Scrapy 等)+任务共享中心

3 、多台容器级虚拟化机器(或者部分真实机器)+爬虫(如 Urllib 、 Scrapy 等)+任务共享中心

大家可以看出:

第一种方式利用真实机器,成本较高,除非你家有矿.

第二种方式其实已经算不错的了,比第一种省钱多了.

第三种方式比第二种更加的节约成本,而且操作起来也并不是特别困难,所以我们采用第三种方式来进行分布式爬虫的编写.

第三种方式里,主要采用的技术有Docker,Redis(Mysql),Urllib,当然你也可以使用Scrapy,Scrapy-Redis,这个看个人。

大家可能会对三种方法里的共享中心有所困惑,我这里画张图给大家:

大家看这张图,可以慢慢理解一下。其实可以简单的比喻成领导给你发布任务,然后你得把任务情况及时汇报给领导。

图中写了两种爬取内容的存储方式,我们这里采用的是存在中心节点当中,这种方式更加具有挑战性,因为它涉及到数据库链接的问题。

除了对共享中心有所困惑,相信部分人对容器级虚拟化机器也不是特别的了解,这里扔给大家一个关键词:Docker,大家可以自行去百度一下,我们会在下一篇文章中给大家讲解的Docker的基础,这些基础足以帮助我们去编写分布式爬虫。

这一篇主要给大家讲解了一下,我们分布式爬虫需要用的技术以及基本的实现原理,下一篇文章,我将会给大家讲解一下Docker相关的技术。

原创不易,欢迎转发

本系列持续更新中...


本文分享自微信公众号 - JAVAandPython君(JAVAandPythonJun)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-07-24

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 走进Java接口测试之服务端测试报告Klov ExtentReports

    在走进Java接口测试之测试报告ExtentReport中我们已经知道 ExtentReport 可以为接口测试提供了出色的可视化报告。而 Klov 是Exte...

    高楼Zee
  • Python 面试题大全系列(四)

    关系型数据库:MySQL,Oracle,SQLServer,SQLite,DB2 非关系型数据库:MongoDB,Redis,HBase,Neo4j

    周萝卜
  • Redis 简介 + Python 操作发布订阅

    众所周知,Redis 是一个高性能的内存 key-value 数据库。 它主要有三个有点:

    周萝卜
  • K8S 生态周报| 2019-07-08~2019-07-14

    「K8S 生态周报」内容主要包含我所接触到的 K8S 生态相关的每周值得推荐的一些信息。欢迎订阅知乎专栏「k8s生态」。本周为什么发布时间比往常迟呢?因为上周我...

    Jintao Zhang
  • 从头搭建一个在线聊天室(四)

    由于我们需要定时清理 redis 中保存的聊天记录,那么就需要一个定时任务。flask 有一个完善的插件 flask-apscheduler,但是简单试用了下,...

    周萝卜
  • 从头搭建一个在线聊天室(二)

    我这里使用 redis 来作为后端数据存储工具。大家如果有自己的 redis 服务器当然是最好了,如果没有的话,推荐下在线的 redis 免费应用 redisl...

    周萝卜
  • 告诉你最简单的方式搭建MySQL、Redis、MongoDB数据库

    数据库在我们日常开发中接触是很多的,平时自己没事写一些东西也经常会用到,之前专门写过安装MySQL、Redis、MongoDB的文章,各种安装配置还是比较麻烦的...

    星星在线
  • Java基于redis实现分布式锁(SpringBoot)

    分布式锁,其实原理是就是多台机器,去争抢一个资源,谁争抢成功,那么谁就持有了这把锁,然后去执行后续的业务逻辑,执行完毕后,把锁释放掉。

    Happyjava
  • 漫漫优化路,总会错几步(记一次接口优化)

    最近做了一个搜索接口的优化,反复压测了四次,终于达到要求了,记录一下,晚上加个鸡腿?

    江南一点雨
  • 经典案例之某新闻网站的实现(二)

    1/在获取短信验证码的时候需要携带的参数:手机号,随机字符串(uuid),图片验证码

    小闫同学啊

扫码关注云+社区

领取腾讯云代金券