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中设置变量访问权限的方法
Apr 27 Python
Python实现读取邮箱中的邮件功能示例【含文本及附件】
Aug 05 Python
Python实现的朴素贝叶斯分类器示例
Jan 06 Python
浅谈Python黑帽子取代netcat
Feb 10 Python
Python生成短uuid的方法实例详解
May 29 Python
python使用selenium登录QQ邮箱(附带滑动解锁)
Jan 23 Python
TensorFlow固化模型的实现操作
May 26 Python
Django DRF APIView源码运行流程详解
Aug 17 Python
python判断元素是否存在的实例方法
Sep 24 Python
Django xadmin安装及使用详解
Oct 26 Python
Python合并pdf文件的工具
Jul 01 Python
python 镜像环境搭建总结
Sep 23 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读取目录下所有文件的代码
2008/01/07 PHP
将数组写入txt文件 var_export
2009/04/21 PHP
让的PHP代码飞起来的40条小技巧(提升php效率)
2010/04/12 PHP
PHP实现根据浏览器跳转不同语言页面代码
2013/08/02 PHP
PHP curl实现抓取302跳转后页面的示例
2014/07/04 PHP
PHP依赖倒置(Dependency Injection)代码实例
2014/10/11 PHP
php实现简单文件下载的方法
2015/01/30 PHP
laravel 实现设置时区的简单方法
2019/10/10 PHP
PHP实现文件上传操作和封装
2020/03/04 PHP
分享别人写的一个小型js框架
2007/08/13 Javascript
你必须知道的JavaScript 变量命名规则详解
2013/05/07 Javascript
jquery操作checkbox实现全选和取消全选
2014/05/02 Javascript
javascript与有限状态机详解
2014/05/08 Javascript
IE8中使用javascript动态加载CSS的解决方法
2014/06/17 Javascript
jQuery实现的仿select功能代码
2015/08/19 Javascript
jquery输入数字随机抽奖特效的简单实现代码
2016/06/10 Javascript
JS实现含有中文字符串的友好截取功能分析
2017/03/13 Javascript
js+canvas实现动态吃豆人效果
2017/03/22 Javascript
JavaScript字符串_动力节点Java学院整理
2017/06/27 Javascript
10行代码实现微信小程序滑动tab切换
2018/12/28 Javascript
通过vue手动封装on、emit、off的代码详解
2019/05/29 Javascript
Django中处理出错页面的方法
2015/07/15 Python
Python实现批量修改图片格式和大小的方法【opencv库与PIL库】
2018/12/03 Python
python实现flappy bird游戏
2018/12/24 Python
浅谈pyqt5在QMainWindow中布局的问题
2019/06/21 Python
python web框架Flask实现图形验证码及验证码的动态刷新实例
2019/10/14 Python
如何在scrapy中捕获并处理各种异常
2020/09/28 Python
英国复古服装和球衣购买网站:3Retro Football
2018/07/09 全球购物
毕业生找工作的求职信范文
2013/12/24 职场文书
运动会横幅标语
2014/06/17 职场文书
县级领导干部开展党的群众路线教育实践活动工作汇报
2014/10/25 职场文书
有限责任公司股东合作协议书
2014/12/02 职场文书
毕业生就业推荐表自我评价
2015/03/02 职场文书
关于感恩老师的古诗句
2019/08/20 职场文书
详细聊聊关于Mysql联合查询的那些事儿
2021/10/24 MySQL
angular4实现带搜索的下拉框
2022/03/25 Javascript