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 制作糗事百科爬虫实例
Sep 22 Python
python实现简单聊天应用 python群聊和点对点均实现
Sep 14 Python
详解python实现识别手写MNIST数字集的程序
Aug 03 Python
Python生成器generator用法示例
Aug 10 Python
python如何获取当前文件夹下所有文件名详解
Jan 25 Python
python实现在函数中修改变量值的方法
Jul 16 Python
python 环境搭建 及python-3.4.4的下载和安装过程
Jul 20 Python
在python中利用try..except来代替if..else的用法
Dec 19 Python
Python利用逻辑回归分类实现模板
Feb 15 Python
计算Python Numpy向量之间的欧氏距离实例
May 22 Python
Python 绘制可视化折线图
Jul 22 Python
Python HTMLTestRunner如何下载生成报告
Sep 04 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
Yii清理缓存的方法
2016/01/06 PHP
PHP快速排序quicksort实例详解
2016/09/28 PHP
ThinkPHP5.1表单令牌Token失效问题的解决
2019/03/22 PHP
在IE浏览器中resize事件执行多次的解决方法
2011/07/12 Javascript
基于jQuery的遍历同id元素 并响应事件的代码
2012/06/14 Javascript
jQuery中nextUntil()方法用法实例
2015/01/07 Javascript
javascript实现简单的贪吃蛇游戏
2015/03/31 Javascript
JS去除iframe滚动条的方法
2015/04/01 Javascript
jQuery中通过ajax调用webservice传递数组参数的问题实例详解
2016/05/20 Javascript
JS动态给对象添加属性和值的实现方法
2016/10/21 Javascript
AngularJS实践之使用ng-repeat中$index的注意点
2016/12/22 Javascript
Bootstarp基本模版学习教程
2017/02/01 Javascript
nodejs入门教程六:express模块用法示例
2017/04/24 NodeJs
javascript执行上下文、变量对象实例分析
2020/04/25 Javascript
vue组件暴露和.js文件暴露接口操作
2020/08/11 Javascript
JavaScript Html实现移动端红包雨功能页面
2021/01/10 Javascript
python去掉字符串中重复字符的方法
2014/02/27 Python
python开发之thread线程基础实例入门
2015/11/11 Python
django中的setting最佳配置小结
2017/11/21 Python
python交互模式下输入换行/输入多行命令的方法
2019/07/02 Python
Django自定义用户表+自定义admin后台中的字段实例
2019/11/18 Python
Python迭代器协议及for循环工作机制详解
2020/07/14 Python
用html5绘制折线图的实例代码
2016/03/25 HTML / CSS
简洁自适应404页面HTML好看的404源码
2020/12/16 HTML / CSS
马来西亚排名第一的宠物用品店:Pets Wonderland
2020/04/16 全球购物
介绍一下EJB的体系结构
2012/08/01 面试题
2014年党的群众路线教育实践活动总结
2014/04/25 职场文书
彩色的翅膀教学反思
2014/04/25 职场文书
公司担保书格式范文
2014/05/12 职场文书
档案保密承诺书
2014/06/03 职场文书
银行反洗钱宣传活动总结
2015/05/08 职场文书
生日祝酒词大全
2015/08/10 职场文书
2016年“11.11”光棍节活动总结
2016/04/05 职场文书
Python 把两层列表展开平铺成一层(5种实现方式)
2021/04/07 Python
Java面试题冲刺第十七天--基础篇3
2021/08/07 面试题
vue实现移动端div拖动效果
2022/03/03 Vue.js