当前位置: 首页 > news >正文

爬虫工作量由小到大的思维转变---<第三章 搞多大的盘>

前言:

刚拿到一个留言,挺有意思的。有位小伙伴问:“我家里有台高配台式机还有两个笔记本,都连着同一个Wi-Fi,我能搞个多大程度的爬虫项目?” 所以呢,咱们得先整出个框架来---也就是列个单子,看看要干什么,怎么干?

正文:

先说说基础的设定吧:

- 台式机,咱们的大脑中枢:分发爬取任务,接着要处理数据,把成果存到SQL里,还得更新Redis的完成状态,顺便管理那些IP代理池。
- 笔记本电脑1 & 2,咱们的勤劳双手:提取任务,开始爬,初步搞定数据然后塞进Redis,过程中别忘了从IP池里换代理,得一把手速。

+----------------+------------------------+--------------------------------------+
| 设备           | 主要职责               | 具体任务                            |
+----------------+------------------------+--------------------------------------+
| 台式机         | 任务调度与数据处理     | 1. 派发爬取任务给两台笔记本          |
|                |                        | 2. 数据解析和逻辑处理                |
|                |                        | 3. 数据存储到SQL数据库               |
|                |                        | 4. 记录任务完成状态到Redis           |
|                |                        | 5. 抓取IP并更新到Redis IP代理池      |
+----------------+------------------------+--------------------------------------+
| 笔记本电脑1    | 网页爬取与初步解析       | 1. 提取任务和网页抓取                |
|                |                        | 2. 初步解析, 结果存为dict到Redis中   |
|                |                        | 3. 从IP代理池抓取和管理IP地址        |
+----------------+------------------------+--------------------------------------+
| 笔记本电脑2    | 网页爬取与初步解析       | 1. 提取任务和网页抓取                |
|                |                        | 2. 初步解析, 结果存为dict到Redis中   |
|                |                        | 3. 从IP代理池抓取和管理IP地址        |
+----------------+------------------------+--------------------------------------+
现有情况下,我们可以这么优化:
台式机,就是你的主控台:
  1. - 分发器(你的任务下发助手)
  2. - 数据处理器(你的情报分析师)
  3. - 数据库写入器(你的秘书,负责记录)
  4. - IP抓取器(你的间谍,找IP信息)
笔记本们,你的现场小分队:
  1. - 爬取器(你的前线探子)
  2. - 解析器(你的码农,帮助解析数据)
  3. - 代理管理器(你的通讯兵,处理IP代理问题)
至于那中间件,就是你的后勤团队:
  1. - 消息队列(任务的接力棒)
  2. - 分布式存储(Redis,你的临时仓库)
  3. - SQL数据库(你的长期仓库)
然后,工作流程就像这样:
​
用户 ---> 控制节点(台式机)| --> 分发器 ---(任务队列)---> 爬取器(笔记本1和2)|                                   | ----> 网页|                                   | <---- 初步解析结果| <-- 数据处理器 <---(结果队列)--- 解析器(笔记本1和2)| <-- 数据库写入器 ---> SQL数据库| <-- IP抓取器 ---> 代理IP池(Redis)
代理数据源 ---> IP抓取器​

你发号施令,任务下发到任务队列,小分队监听到任务就开始行动,行动完毕,再回传数据。你就坐在那儿,等成果上门,处理之后存档,同时记得更新IP代理池。

再来,如果你要是觉得还没玩够,就再加点料:
用户 ---> 控制节点(台式机)| --> 分发器 ---(任务队列)---> 爬取器(笔记本1和2) -- 日志系统 <-- 系统各部分|                                   | ----> 网页|                                   | <---- 初步解析结果 ---- 日志系统 <-- 系统各部分| <-- 数据处理器 <---(结果队列)--- 解析器(笔记本1和2) -- 日志系统 <-- 系统各部分| <-- 数据库写入器 ---> SQL数据库  -- 日志系统 <-- 系统各部分| <-- IP抓取器 ---> 代理IP池(Redis) -- 日志系统 <-- 系统各部分 |                      |               监控系统 <-- 系统各部分|                      |--(错误队列)--> 错误处理器       
代理数据源 ---> IP抓取器     -- 日志系统 <-- 系统各部分

- 日志系统,你的情报收集器,记录所有行动日志。
- 错误处理系统,你的问题处理顾问,出了岔子也不怕。
- 监控系统,就是你的眼睛,24/7不打烊,实时监控所有动态。
各位新来的组件,简单说就是:
- 日志系统:就是你的情报库,啥都能留下来。
- 错误处理:出了问题,这边帮你分类,标记,处理,重试,总之就是保证任务能顺利完成。
- 监视系统:就是你的仪表盘,跟你说你的爬虫身体好不好,需要不需要加油。

总结:

就这么简单。咱们有了这些,想要爬得多快都没问题。所以,赶紧动手吧,期待你们的好消息!

相关文章:

  • c++程序设计定义一个 (图书)类,在该类定义中包括
  • 【数据结构】树状数组总结
  • 推荐一款好用的包含表格识别的OCR网站
  • Debian系统安装OpenVPN
  • javaWebssh汽车销售管理系统myeclipse开发mysql数据库MVC模式java编程计算机网页设计
  • Flink系列之:窗口关联
  • HTML面试题
  • 【Spark面试】Spark面试题答案
  • 修改npm源码解决服务端渲染环境中localstorage报错read properties of undefined (reading getItem)
  • Oracle-应用会话集中在RAC集群一个节点问题
  • 使用 ?? 重新定义逻辑以获得更严格、更安全的 JavaScript 默认值
  • Vue中的数据变化监控与响应——深入理解Watchers
  • 数据分析为何要学统计学(10)——如何进行比率检验
  • 【jmeter】接口测试流程
  • 阿里云部署k8s with kubesphere
  • Docker入门(二) - Dockerfile
  • es6
  • go append函数以及写入
  • JavaScript设计模式系列一:工厂模式
  • LeetCode29.两数相除 JavaScript
  • Otto开发初探——微服务依赖管理新利器
  • php ci框架整合银盛支付
  • Protobuf3语言指南
  • Spring Cloud(3) - 服务治理: Spring Cloud Eureka
  • 分布式事物理论与实践
  • 猴子数据域名防封接口降低小说被封的风险
  • 基于MaxCompute打造轻盈的人人车移动端数据平台
  • 前端知识点整理(待续)
  • 世界编程语言排行榜2008年06月(ActionScript 挺进20强)
  • 小程序button引导用户授权
  • 延迟脚本的方式
  • 一个JAVA程序员成长之路分享
  • 主流的CSS水平和垂直居中技术大全
  • Semaphore
  • 说说我为什么看好Spring Cloud Alibaba
  • ​​​​​​​​​​​​​​汽车网络信息安全分析方法论
  • ​LeetCode解法汇总518. 零钱兑换 II
  • ​软考-高级-系统架构设计师教程(清华第2版)【第20章 系统架构设计师论文写作要点(P717~728)-思维导图】​
  • #!/usr/bin/python与#!/usr/bin/env python的区别
  • (01)ORB-SLAM2源码无死角解析-(56) 闭环线程→计算Sim3:理论推导(1)求解s,t
  • (1)Nginx简介和安装教程
  • (51单片机)第五章-A/D和D/A工作原理-A/D
  • (附源码)流浪动物保护平台的设计与实现 毕业设计 161154
  • (九)One-Wire总线-DS18B20
  • (论文阅读笔记)Network planning with deep reinforcement learning
  • (三)模仿学习-Action数据的模仿
  • (数位dp) 算法竞赛入门到进阶 书本题集
  • (原创)攻击方式学习之(4) - 拒绝服务(DOS/DDOS/DRDOS)
  • .bat批处理出现中文乱码的情况
  • .NET CF命令行调试器MDbg入门(一)
  • .NET Core WebAPI中封装Swagger配置
  • .Net(C#)自定义WinForm控件之小结篇
  • .NET牛人应该知道些什么(2):中级.NET开发人员
  • .NET设计模式(8):适配器模式(Adapter Pattern)
  • .Net下使用 Geb.Video.FFMPEG 操作视频文件