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中的__init__和__new__
Mar 12 Python
从零学Python之入门(五)缩进和选择
May 27 Python
python日志记录模块实例及改进
Feb 12 Python
详谈python http长连接客户端
Jun 12 Python
Python2.7 实现引入自己写的类方法
Apr 29 Python
Python 在字符串中加入变量的实例讲解
May 02 Python
python3下使用cv2.imwrite存储带有中文路径图片的方法
May 10 Python
python 不以科学计数法输出的方法
Jul 16 Python
Django认证系统实现的web页面实现代码
Aug 12 Python
基于Django统计博客文章阅读量
Oct 29 Python
浅析Python模块之间的相互引用问题
Feb 26 Python
Django实现翻页的示例代码
May 24 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
window+nginx+php环境配置 附配置搭配说明
2010/12/29 PHP
ajax 的post方法实例(带循环)
2011/07/04 PHP
php unicode编码和字符串互转的方法
2020/08/12 PHP
cnblogs TagCloud基于jquery的实现代码
2010/06/11 Javascript
基于JQuery 滑动与动画的说明介绍
2013/04/18 Javascript
jQuery之过滤元素操作小结
2013/11/30 Javascript
javascript实现图片延迟加载方法汇总(三种方法)
2015/08/27 Javascript
JS模拟实现Select效果代码
2015/09/24 Javascript
AngularJS中如何使用$http对MongoLab数据表进行增删改查
2016/01/23 Javascript
jQuery使用模式窗口实现在主页面和子页面中互相传值的方法
2016/03/01 Javascript
jQuery+json实现动态创建复杂表格table的方法
2016/10/25 Javascript
JS给Array添加是否包含字符串的简单方法
2016/10/29 Javascript
JavaScript+Html5实现按钮复制文字到剪切板功能(手机网页兼容)
2017/03/30 Javascript
xmlplus组件设计系列之下拉刷新(PullRefresh)(6)
2017/05/03 Javascript
jQuery实现的中英文切换功能示例
2019/01/11 jQuery
jquery操作checkbox的常用方法总结【附测试源码下载】
2019/06/10 jQuery
JavaScript 实现同时选取多个时间段的方法
2019/10/17 Javascript
JavaScript 中的执行上下文和执行栈实例讲解
2021/02/25 Javascript
python从网络读取图片并直接进行处理的方法
2015/05/22 Python
python实现图书管理系统
2018/03/12 Python
对Python信号处理模块signal详解
2019/01/09 Python
python实现在函数图像上添加文字和标注的方法
2019/07/08 Python
关于Python3 类方法、静态方法新解
2019/08/30 Python
在Python中等距取出一个数组其中n个数的实现方式
2019/11/27 Python
Python+Selenium实现自动化的环境搭建的步骤(图文)
2020/09/01 Python
CSS3实现闪烁动画效果的方法
2015/02/09 HTML / CSS
Marlies Dekkers内衣美国官方网上商店:高端内衣品牌
2018/11/12 全球购物
工程造价与财务管理专业应届生求职信
2013/10/06 职场文书
会计助理的岗位职责
2013/11/29 职场文书
小学生新学期寄语
2014/01/19 职场文书
义务教育学校标准化建设汇报材料
2014/08/16 职场文书
纪检干部个人对照检查材料
2014/09/23 职场文书
订货会邀请函
2015/01/31 职场文书
2019年公司卫生管理制度样本
2019/08/21 职场文书
用python实现监控视频人数统计
2021/05/21 Python
python机器学习实现oneR算法(以鸢尾data为例)
2022/03/03 Python