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对字符串实现去重操作的方法示例
Aug 11 Python
Python 多进程和数据传递的理解
Oct 09 Python
Python打印输出数组中全部元素
Mar 13 Python
python实现批量解析邮件并下载附件
Jun 19 Python
python面向对象入门教程之从代码复用开始(一)
Dec 11 Python
python脚本开机自启的实现方法
Jun 28 Python
python读取并写入mat文件的方法
Jul 12 Python
jupyter notebook oepncv 显示一张图像的实现
Apr 24 Python
python实现猜数游戏(保存游戏记录)
Jun 22 Python
Python制作数据预测集成工具(值得收藏)
Aug 21 Python
python 如何用urllib与服务端交互(发送和接收数据)
Mar 04 Python
python实现简单倒计时功能
Apr 21 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.ini中文版(1)
2006/10/09 PHP
如何获取JQUERY AJAX返回的JSON结果集实现代码
2012/12/10 Javascript
jQuery 计算iframe 窗口大小的方法
2014/05/13 Javascript
JavaScript字符串常用类使用方法汇总
2015/04/14 Javascript
JQuery+Ajax实现数据查询、排序和分页功能
2015/09/27 Javascript
JavaScript表单验证实例之验证表单项是否为空
2016/01/10 Javascript
深入理解JS中的Function.prototype.bind()方法
2016/10/11 Javascript
JavaScript实现自定义媒体播放器方法介绍
2017/01/03 Javascript
Angular-UI Bootstrap组件实现警报功能
2018/07/16 Javascript
jQuery实现基本隐藏与显示效果的方法详解
2018/09/05 jQuery
微信分享invalid signature签名错误踩过的坑
2020/04/11 Javascript
js实现浏览器打印功能的示例代码
2020/07/15 Javascript
在antd中setFieldsValue和defaultVal的用法
2020/10/29 Javascript
[00:49]完美世界DOTA2联赛10月28日开团时刻:随便打
2020/10/29 DOTA
[01:01:23]完美世界DOTA2联赛PWL S2 Forest vs FTD.C 第一场 11.26
2020/11/30 DOTA
python求素数示例分享
2014/02/16 Python
python多线程方式执行多个bat代码
2016/06/07 Python
Python实现excel转sqlite的方法
2017/07/17 Python
python 使用值来排序一个字典的方法
2018/11/16 Python
解决python3 Pycharm上连接数据库时报错的问题
2018/12/03 Python
python实现PID算法及测试的例子
2019/08/08 Python
pytorch中图像的数据格式实例
2020/02/11 Python
设置jupyter中DataFrame的显示限制方式
2020/04/12 Python
python程序需要编译吗
2020/06/19 Python
在python中对于bool布尔值的取反操作
2020/12/11 Python
自定义html标记替换html5新增元素
2008/10/17 HTML / CSS
美国现代家具网站:Design Within Reach
2018/07/19 全球购物
从当地商店送来的杂货:Instacart
2018/08/19 全球购物
Expedia法国:全球最大在线旅游公司
2018/09/30 全球购物
白莲教口号
2014/06/18 职场文书
优秀中职教师事迹材料
2014/08/26 职场文书
学用政策心得体会
2014/09/10 职场文书
学生实习证明模板汇总
2014/09/25 职场文书
解决Golang中ResponseWriter的一个坑
2021/04/27 Golang
使用Spring处理x-www-form-urlencoded方式
2021/11/02 Java/Android
Python万能模板案例之matplotlib绘制甘特图
2022/04/13 Python