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发送邮件附件以定时备份MySQL的教程
Apr 25 Python
python使用wmi模块获取windows下硬盘信息的方法
May 15 Python
Python实现的科学计算器功能示例
Aug 04 Python
python3实现逐字输出的方法
Jan 23 Python
Python字符串的一些操作方法总结
Jun 10 Python
选择Python写网络爬虫的优势和理由
Jul 07 Python
python获取指定日期范围内的每一天,每个月,每季度的方法
Aug 08 Python
tensorflow之自定义神经网络层实例
Feb 07 Python
python对XML文件的操作实现代码
Mar 27 Python
Python新手如何理解循环加载模块
May 29 Python
Python爬虫入门有哪些基础知识点
Jun 02 Python
python中Pyqt5使用Qlabel标签播放视频
Apr 22 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
《破坏领主》销量已超100万 未来将继续开发新内容
2020/03/08 其他游戏
php防注
2007/01/15 PHP
php获取qq用户昵称和在线状态(实例分析)
2013/10/27 PHP
php生成图形(Libchart)实例
2013/11/06 PHP
php单文件版在线代码编辑器
2015/03/12 PHP
tp5框架基于ajax实现异步删除图片的方法示例
2020/02/10 PHP
JavaScript1.6数组新特性介绍以及JQuery的几个工具方法
2013/12/06 Javascript
js的alert样式如何更改如背景颜色
2014/01/22 Javascript
javascript的switch用法注意事项分析
2015/02/02 Javascript
jquery让指定的元素闪烁显示的方法
2015/03/17 Javascript
jQuery实现TAB风格的全国省份城市滑动切换效果代码
2015/08/24 Javascript
JS实现兼容性较好的随屏滚动效果
2015/11/09 Javascript
js生成随机数的过程解析
2015/11/24 Javascript
详细谈谈AngularJS的子级作用域问题
2016/09/05 Javascript
Javascript typeof与instanceof的区别
2016/10/18 Javascript
巧用canvas
2017/01/21 Javascript
基于Bootstrap的网页设计实例
2017/03/01 Javascript
Vue-input框checkbox强制刷新问题
2019/04/18 Javascript
Vue运用transition实现过渡动画
2019/05/06 Javascript
nodejs实现用户登录路由功能
2019/05/22 NodeJs
JS如何判断对象是否包含某个属性
2020/08/29 Javascript
逐行分析鸿蒙系统的 JavaScript 框架(推荐)
2020/09/17 Javascript
使用 Python 玩转 GitHub 的贡献板(推荐)
2019/04/04 Python
Python Django模板之模板过滤器与自定义模板过滤器示例
2019/10/18 Python
浅谈Django2.0 加xadmin踩的坑
2019/11/15 Python
PyQt5多线程刷新界面防假死示例
2019/12/13 Python
python 在threading中如何处理主进程和子线程的关系
2020/04/25 Python
纯CSS3代码实现switch滑动开关按钮效果
2016/08/30 HTML / CSS
NFL欧洲商店(德国):NFL Europe Shop DE
2018/11/03 全球购物
聚美优品的广告词
2014/03/14 职场文书
《厄运打不垮的信念》教学反思
2014/04/13 职场文书
企业标语口号
2014/06/10 职场文书
政府采购方案
2014/06/12 职场文书
2014年化工厂工作总结
2014/11/25 职场文书
MySQL root密码的重置方法
2021/04/21 MySQL
Oracle配置dblink访问PostgreSQL的操作方法
2022/03/21 PostgreSQL