Python爬虫程序架构和运行流程原理解析


Posted in Python onMarch 09, 2020

1 前言

Python开发网络爬虫获取网页数据的基本流程为:

发起请求

通过URL向服务器发起request请求,请求可以包含额外的header信息。

获取响应内容

服务器正常响应,将会收到一个response,即为所请求的网页内容,或许包含HTML,Json字符串或者二进制的数据(视频、图片)等。

解析内容

如果是HTML代码,则可以使用网页解析器进行解析,如果是Json数据,则可以转换成Json对象进行解析,如果是二进制的数据,则可以保存到文件做进一步处理。

保存数据

可以保存到本地文件,也可以保存到数据库(MySQL,Redis,MongoDB等)。

Python爬虫程序架构和运行流程原理解析

2 爬虫程序架构及运行流程

Python爬虫程序架构和运行流程原理解析

网络爬虫程序框架主要包括以下五大模块:

  • 爬虫调度器
  • URL管理器
  • HTML下载器
  • HTML解析器
  • 数据存储器

五大模块功能如下所示:

  • 爬虫调度器:主要负责统筹其它四个模块的协调工作。
  • URL管理器:负责管理URL链接,维护已经爬取的URL集合和未爬取的URL集合,提供获取新URL链接的接口。
  • HTML下载器:用于从URL管理器中获取未爬取的URL链接并下载HTML网页。
  • HTML解析器:用于从HTML下载器中获取已经下载的HTML网页,并从中解析出新的URL链接交给URL管理器,解析出有效数据交给数据存储器。
  • 数据存储器:用于将HTML解析器解析出来的数据通过文件或者数据库的形式存储起来。

网络爬虫程序框架的动态运行流程如下所示:

Python爬虫程序架构和运行流程原理解析

3 小结

本文简要介绍了Python开发网络爬虫的程序框架,将网络爬虫运行流程按照具体功能划分为不同模块,以便各司其职、协同运作。搭建好网络爬虫框架后,能够有效地提高我们开发网络爬虫项目的效率,避免一些重复造车轮的工作。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python实现发送email的几种常用方法
Aug 18 Python
python统计字符串中指定字符出现次数的方法
Apr 04 Python
Python cookbook(数据结构与算法)找出序列中出现次数最多的元素算法示例
Mar 15 Python
Python异常处理操作实例详解
Aug 28 Python
python+PyQT实现系统桌面时钟
Jun 16 Python
python 函数内部修改外部变量的方法
Dec 18 Python
详解Django中CBV(Class Base Views)模型源码分析
Feb 25 Python
python将视频转换为全字符视频
Apr 26 Python
通过celery异步处理一个查询任务的完整代码
Nov 19 Python
如何基于pythonnet调用halcon脚本
Jan 20 Python
在PyCharm中遇到pip安装 失败问题及解决方案(pip失效时的解决方案)
Mar 10 Python
python+opencv实现移动侦测(帧差法)
Mar 20 Python
python opencv 图像边框(填充)添加及图像混合的实现方法(末尾实现类似幻灯片渐变的效果)
Mar 09 #Python
Python Opencv 通过轨迹(跟踪)栏实现更改整张图像的背景颜色
Mar 09 #Python
pycharm实现在虚拟环境中引入别人的项目
Mar 09 #Python
Python 面向对象静态方法、类方法、属性方法知识点小结
Mar 09 #Python
python微信公众号开发简单流程实现
Mar 09 #Python
Python 面向对象部分知识点小结
Mar 09 #Python
Django跨域资源共享问题(推荐)
Mar 09 #Python
You might like
PHP调用C#开发的dll类库方法
2014/07/28 PHP
PHP判断字符串长度的两种方法很实用
2015/09/22 PHP
PHP 中使用ajax时一些常见错误总结整理
2017/02/27 PHP
JavaScript CSS修改学习第二章 样式
2010/02/19 Javascript
js 强制弹出窗口代码研究-又一款代码
2010/03/20 Javascript
详解强大的jQuery选择器之基本选择器、层次选择器
2012/02/07 Javascript
js函数setTimeout延迟执行的简单介绍
2013/07/17 Javascript
深入理解JavaScript系列(21):S.O.L.I.D五大原则之接口隔离原则ISP详解
2015/03/05 Javascript
js使用split函数按照多个字符对字符串进行分割的方法
2015/03/20 Javascript
浅谈jquery中delegate()与live()
2015/06/22 Javascript
JavaScript对HTML DOM使用EventListener进行操作
2015/10/21 Javascript
微信小程序实现倒计时调用相机自动拍照功能
2018/06/10 Javascript
微信小程序非swiper组件实现的自定义伪3D轮播图效果示例
2018/12/11 Javascript
玩转Koa之koa-router原理解析
2018/12/29 Javascript
原生js实现碰撞检测
2020/03/12 Javascript
vue计算属性+vue中class与style绑定(推荐)
2020/03/30 Javascript
react基本安装与测试示例
2020/04/27 Javascript
node koa2 ssr项目搭建的方法步骤
2020/12/11 Javascript
[01:21:58]守擂赛DOTA2第一周决赛
2020/04/22 DOTA
python 中文乱码问题深入分析
2011/03/13 Python
python从ftp下载数据保存实例
2013/11/20 Python
python pandas模块基础学习详解
2019/07/03 Python
anaconda中更改python版本的方法步骤
2019/07/14 Python
手写一个python迭代器过程详解
2019/08/27 Python
利用pyshp包给shapefile文件添加字段的实例
2019/12/06 Python
python3光学字符识别模块tesserocr与pytesseract的使用详解
2020/02/26 Python
Pycharm2020.1安装无法启动问题即设置中文插件的方法
2020/08/07 Python
手摸手教你用canvas实现给图片添加平铺水印的实现
2019/08/20 HTML / CSS
安全的后院和健身蹦床:JumpSport
2019/07/15 全球购物
初中校园广播稿
2014/02/02 职场文书
环保志愿者活动方案
2014/08/14 职场文书
房地产销售助理岗位职责
2015/04/14 职场文书
婚礼家长致辞
2015/07/27 职场文书
高一军训感想
2015/08/07 职场文书
煤矿安全学习心得体会
2016/01/18 职场文书
《半截蜡烛》教学反思
2016/02/19 职场文书