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内置函数bin() oct()等实现进制转换
Dec 30 Python
python解析模块(ConfigParser)使用方法
Dec 10 Python
跟老齐学Python之集成开发环境(IDE)
Sep 12 Python
由浅入深讲解python中的yield与generator
Apr 05 Python
python中nan与inf转为特定数字方法示例
May 11 Python
python简单实例训练(21~30)
Nov 15 Python
对python-3-print重定向输出的几种方法总结
May 11 Python
如何用python整理附件
May 13 Python
Python决策树之基于信息增益的特征选择示例
Jun 25 Python
PyQt5实现类似别踩白块游戏
Jan 24 Python
python图像和办公文档处理总结
May 28 Python
如何基于Python和Flask编写Prometheus监控
Nov 25 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下将多个数组合并成一个数组的方法与实例代码
2011/02/03 PHP
php预定义变量使用帮助(带实例)
2013/10/30 PHP
PHP实现远程下载文件到本地
2015/05/17 PHP
php表单文件iframe异步上传实例讲解
2017/07/26 PHP
php判断目录存在的简单方法
2019/09/26 PHP
JQuery 1.4 中的Ajax问题
2010/01/23 Javascript
js的逻辑运算符 ||
2010/05/31 Javascript
JS左右无缝滚动(一般方法+面向对象方法)
2012/08/17 Javascript
移动节点的jquery代码
2014/01/13 Javascript
Bootstrap每天必学之js插件
2015/11/30 Javascript
javascript特殊日历控件分享
2016/03/07 Javascript
echarts3 使用总结(绘制各种图表,地图)
2017/01/05 Javascript
解决Vue 通过下表修改数组,页面不渲染的问题
2018/03/08 Javascript
关于JavaScript中高阶函数的魅力详解
2018/09/07 Javascript
vue中使用微信公众号js-sdk踩坑记录
2019/03/29 Javascript
详解babel升级到7.X采坑总结
2019/05/12 Javascript
JavaScript实现手机号码 3-4-4格式并控制新增和删除时光标的位置
2020/06/02 Javascript
vue element 关闭当前tab 跳转到上一路由操作
2020/07/22 Javascript
[05:17]DOTA2誓师:今天我们在这里 明天TI4等我!
2014/03/26 DOTA
[45:32]Liquid vs LGD 2018国际邀请赛淘汰赛BO3 第二场 8.23
2018/08/24 DOTA
Python的Bottle框架的一些使用技巧介绍
2015/04/08 Python
在Python中使用pngquant压缩png图片的教程
2015/04/09 Python
[原创]python爬虫(入门教程、视频教程)
2018/01/08 Python
分享Pycharm中一些不为人知的技巧
2018/04/03 Python
Python FtpLib模块应用操作详解
2019/12/12 Python
Trip.com香港网站:Ctrip携程旗下,全球最大的网上旅游社之一
2016/08/01 全球购物
美国在线家装零售商:Build.com
2016/09/02 全球购物
斯洛伐克电子产品购物网站:DATART
2020/04/05 全球购物
供用电专业求职信
2014/07/07 职场文书
迎国庆演讲稿
2014/09/05 职场文书
检查机关党的群众路线个人整改措施
2014/10/04 职场文书
群众路线教育实践活动学习笔记内容
2014/11/06 职场文书
婚礼答谢礼品
2015/01/20 职场文书
师德师风个人总结
2015/02/06 职场文书
负责培养人意见
2015/06/05 职场文书
MySQL磁盘碎片整理实例演示
2022/04/03 MySQL