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超简单解决约瑟夫环问题
May 12 Python
Python回文字符串及回文数字判定功能示例
Mar 20 Python
Python学习笔记之自定义函数用法详解
Jun 08 Python
Python OpenCV中的resize()函数的使用
Jun 20 Python
使用python serial 获取所有的串口名称的实例
Jul 02 Python
简单了解django索引的相关知识
Jul 17 Python
python3常用的数据清洗方法(小结)
Oct 31 Python
python实现快递价格查询系统
Mar 03 Python
jupyter notebook 添加kernel permission denied的操作
Apr 21 Python
Python unittest生成测试报告过程解析
Sep 08 Python
python代码实现备忘录案例讲解
Jul 26 Python
Python读取和写入Excel数据
Apr 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中Fatal error session_start()错误解决步骤
2014/08/05 PHP
php实现搜索一维数组元素并删除二维数组对应元素的方法
2015/07/06 PHP
laravel学习教程之关联模型
2016/07/30 PHP
PHP/HTML混写的四种方式总结
2017/02/27 PHP
Aster vs KG BO3 第一场2.18
2021/03/10 DOTA
javascript IE中的DOM ready应用技巧
2008/07/23 Javascript
javascript 全角转换实现代码
2009/07/17 Javascript
js调用图片隐藏&显示实现代码
2013/09/13 Javascript
setInterval与clearInterval的使用示例代码
2014/01/28 Javascript
JavaScript实现文字跟随鼠标特效
2015/08/06 Javascript
javascript实现鼠标移到Image上方时显示文字效果的方法
2015/08/07 Javascript
jquery实现的判断倒计时是否结束代码
2016/02/05 Javascript
Three.js快速入门教程
2016/09/09 Javascript
JavaScript制作颜色反转小游戏
2016/09/25 Javascript
JavaScript组件开发之输入框加候选框
2017/03/10 Javascript
微信小程序 商城开发(ecshop )简单实例
2017/04/07 Javascript
JS实现微信摇一摇原理解析
2017/07/22 Javascript
js 发布订阅模式的实例讲解
2017/09/10 Javascript
javascript与PHP动态往类中添加方法对比
2018/03/21 Javascript
layui checkbox默认选中,获取选中值,清空所有选中项的例子
2019/09/02 Javascript
解决layui的使用以及针对select、radio等表单组件不显示的问题
2019/09/05 Javascript
一起写一个即插即用的Vue Loading插件实现
2019/10/31 Javascript
JavaScript数组类型Array相关的属性与方法详解
2020/09/08 Javascript
[49:30]DOTA2-DPC中国联赛正赛 Dragon vs Dynasty BO3 第二场 3月4日
2021/03/11 DOTA
Python tempfile模块学习笔记(临时文件)
2014/05/25 Python
python编程羊车门问题代码示例
2017/10/25 Python
Python清空文件并替换内容的实例
2018/10/22 Python
Python企业编码生成系统总体系统设计概述
2019/07/26 Python
Python requests.post方法中data与json参数区别详解
2020/04/30 Python
Python爬虫小例子——爬取51job发布的工作职位
2020/07/10 Python
几个常见的软件测试问题
2016/09/07 面试题
体育教育专业自荐信范文
2013/12/20 职场文书
运动会入场式解说词
2014/02/18 职场文书
2015年勤工助学工作总结
2015/04/29 职场文书
小学少先队活动总结
2015/05/08 职场文书
教师廉政准则心得体会
2016/01/20 职场文书