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编写一个在Linux下实现截图分享的脚本的教程
Apr 24 Python
Python新手们容易犯的几个错误总结
Apr 01 Python
使用paramiko远程执行命令、下发文件的实例
Oct 01 Python
Python3使用PyQt5制作简单的画板/手写板实例
Oct 19 Python
Python实现返回数组中第i小元素的方法示例
Dec 04 Python
怎么使用pipenv管理你的python项目
Mar 12 Python
python3.5 email实现发送邮件功能
May 22 Python
python中web框架的自定义创建
Sep 08 Python
Python字符串函数strip()原理及用法详解
Jul 23 Python
python 生成器需注意的小问题
Sep 29 Python
Python tkinter之ComboBox(下拉框)的使用简介
Feb 05 Python
python中 .npy文件的读写操作实例
Apr 14 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
全国FM电台频率大全 - 2 天津市
2020/03/11 无线电
用Socket发送电子邮件
2006/10/09 PHP
php读取本地文件常用函数(fopen与file_get_contents)
2013/09/09 PHP
ThinkPHP自动转义存储富文本编辑器内容导致读取出错的解决方法
2014/08/08 PHP
一个比较不错的PHP日历类分享
2014/11/18 PHP
Yii2中datetime类的使用
2016/12/17 PHP
php进程daemon化的正确实现方法
2018/09/06 PHP
Javascript 验证上传图片大小[客户端]
2009/08/01 Javascript
纯js实现背景图片切换效果代码
2010/11/14 Javascript
使用js+jquery实现无限极联动
2013/05/23 Javascript
把input初始值不写value的具体实现方法
2013/07/04 Javascript
20个实用的JavaScript技巧分享
2014/11/28 Javascript
利用jQuery实现漂亮的圆形进度条倒计时插件
2015/09/30 Javascript
JS实现点击按钮获取页面高度的方法
2015/11/02 Javascript
简单对比分析JavaScript中的apply,call与this的使用
2015/12/04 Javascript
详解JavaScript中的属性和特性
2016/12/08 Javascript
使用openSpeDiv方法实现Ecshop登录弹窗框效果
2017/03/13 Javascript
微信小程序之数据双向绑定与数据操作
2017/05/12 Javascript
jquery 一键复制到剪切板的实例
2017/09/20 jQuery
浅谈vue单一组件下动态修改数据时的全部重渲染
2018/03/01 Javascript
vue.js 底部导航栏 一级路由显示 子路由不显示的解决方法
2018/03/09 Javascript
详解react、redux、react-redux之间的关系
2018/04/11 Javascript
微信小程序实现留言功能
2018/10/31 Javascript
微信小程序绑定手机号获取验证码功能
2019/10/22 Javascript
python中wx将图标显示在右下角的脚本代码
2013/03/08 Python
Python Sql数据库增删改查操作简单封装
2016/04/18 Python
python 发送json数据操作实例分析
2019/10/15 Python
django框架中ajax的使用及避开CSRF 验证的方式详解
2019/12/11 Python
django 解决model中类写不到数据库中,数据库无此字段的问题
2020/05/20 Python
详解python UDP 编程
2020/08/24 Python
消防安全责任书
2014/04/14 职场文书
小学课外阅读总结
2014/07/09 职场文书
优秀团员事迹材料1000字
2014/08/20 职场文书
新手开公司创业注意事项有哪些?
2019/07/29 职场文书
pdf论文中python画的图Type 3 fonts字体不兼容的解决方案
2021/04/24 Python
HTML怎么设置下划线?html文字加下划线方法
2021/12/06 HTML / CSS