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获取一组汉字拼音首字母的方法
Jul 01 Python
Saltstack快速入门简单汇总
Mar 01 Python
使用Python的Flask框架构建大型Web应用程序的结构示例
Jun 04 Python
Python实现将不规范的英文名字首字母大写
Nov 15 Python
Python3多线程操作简单示例
May 22 Python
django如何连接已存在数据的数据库
Aug 14 Python
python 对给定可迭代集合统计出现频率,并排序的方法
Oct 18 Python
python 自动重连wifi windows的方法
Dec 18 Python
利用Django模版生成树状结构实例代码
May 19 Python
pytorch中nn.Conv1d的用法详解
Dec 31 Python
通过实例了解Python异常处理机制底层实现
Jul 23 Python
Python实现疫情地图可视化
Feb 05 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
解析Ubuntu下crontab命令的用法
2013/06/24 PHP
PHP提示Deprecated: mysql_connect(): The mysql extension is deprecated的解决方法
2014/08/28 PHP
对laravel的csrf 防御机制详解,及form中csrf_token()的存在介绍
2019/10/24 PHP
JQuery1.6 使用方法三
2011/11/23 Javascript
在Linux上用forever实现Node.js项目自启动
2014/07/09 Javascript
jQuery中大家不太了解的几个方法
2015/03/04 Javascript
JavaScript实现数组在指定位置插入若干元素的方法
2015/04/06 Javascript
Node.js 日志处理模块log4js
2016/08/28 Javascript
浅谈JS之tagNaem和nodeName
2016/09/13 Javascript
微信小程序 scroll-view组件实现列表页实例代码
2016/12/14 Javascript
微信小程序实现日历签到
2020/09/21 Javascript
JavaScript代码实现简单计算器
2020/12/27 Javascript
[01:11:21]DOTA2-DPC中国联赛 正赛 Phoenix vs CDEC BO3 第三场 3月7日
2021/03/11 DOTA
python实现随机森林random forest的原理及方法
2017/12/21 Python
利用Anaconda简单安装scrapy框架的方法
2018/06/13 Python
python实现求两个字符串的最长公共子串方法
2018/07/20 Python
django框架事务处理小结【ORM 事务及raw sql,customize sql 事务处理】
2019/06/27 Python
python文字和unicode/ascll相互转换函数及简单加密解密实现代码
2019/08/12 Python
python 多进程共享全局变量之Manager()详解
2019/08/15 Python
将pytorch转成longtensor的简单方法
2020/02/18 Python
python主要用于哪些方向
2020/07/05 Python
学python爬虫能做什么
2020/07/29 Python
python 实现弹球游戏的示例代码
2020/11/17 Python
详解html5页面 rem 布局适配方法
2018/01/12 HTML / CSS
奥兰多迪士尼门票折扣:Undercover Tourist
2018/07/09 全球购物
Furla官网:意大利著名的皮革品牌
2019/08/06 全球购物
俄罗斯连接商品和买家的在线平台:goods.ru
2020/11/30 全球购物
哈理工毕业生的求职信
2013/12/22 职场文书
初三学习计划书范文
2014/04/30 职场文书
新学期开学演讲稿
2014/05/24 职场文书
公务员诚信承诺书
2014/05/26 职场文书
小学生国庆节演讲稿
2014/09/05 职场文书
最美乡村教师观后感
2015/06/11 职场文书
优秀学生干部主要事迹材料
2015/11/04 职场文书
优秀创业计划书分享
2019/07/19 职场文书
Go归并排序算法的实现方法
2022/04/06 Golang