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 相关文章推荐
pyv8学习python和javascript变量进行交互
Dec 04 Python
详解Python中的__init__和__new__
Mar 12 Python
Python连接MySQL并使用fetchall()方法过滤特殊字符
Mar 13 Python
Python2.7简单连接与操作MySQL的方法
Apr 27 Python
Python学习小技巧之列表项的拼接
May 20 Python
python 读取.csv文件数据到数组(矩阵)的实例讲解
Jun 14 Python
Pandas读取MySQL数据到DataFrame的方法
Jul 25 Python
python调用百度语音REST API
Aug 30 Python
Django中的FBV和CBV用法详解
Sep 15 Python
python随机生成库faker库api实例详解
Nov 28 Python
Python使用循环神经网络解决文本分类问题的方法详解
Jan 16 Python
Django与pyecharts结合的实例代码
May 13 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/06/23 PHP
Zend Framework实现Zend_View集成Smarty模板系统的方法
2016/03/05 PHP
PHP文件上传类实例详解
2016/04/08 PHP
thinkphp项目部署到Linux服务器上报错“模板不存在”如何解决
2016/04/27 PHP
Yii 2.0中场景的使用教程
2017/06/02 PHP
JS正则表达式大全(整理详细且实用)
2013/11/14 Javascript
JS简单计算器实例
2015/01/20 Javascript
JavaScript实现向右伸出的多级网页菜单效果
2015/08/25 Javascript
使用JavaScript判断手机浏览器是横屏还是竖屏问题
2016/08/02 Javascript
JS提示:Uncaught SyntaxError:Unexpected token ) 错误的解决方法
2016/08/19 Javascript
原生js调用json方法总结
2018/02/22 Javascript
纯异步nodejs文件夹(目录)复制功能
2019/09/03 NodeJs
vue实现图片上传预览功能
2019/12/23 Javascript
jQuery 选择器用法实例分析【prev + next】
2020/05/22 jQuery
使用JavaScript和MQTT开发物联网应用示例解析
2020/08/07 Javascript
使用Python进行稳定可靠的文件操作详解
2013/12/31 Python
Python学习笔记(一)(基础入门之环境搭建)
2014/06/05 Python
python文件写入实例分析
2015/04/08 Python
在MAC上搭建python数据分析开发环境
2016/01/26 Python
python实现SOM算法
2018/02/23 Python
python leetcode 字符串相乘实例详解
2018/09/03 Python
Dlib+OpenCV深度学习人脸识别的方法示例
2019/05/14 Python
如何基于python生成list的所有的子集
2019/11/11 Python
python输出数学符号实例
2020/05/11 Python
Python如何获取文件指定行的内容
2020/05/27 Python
html5 input属性使用示例
2013/06/28 HTML / CSS
美国最大的团购网站:Groupon
2016/07/23 全球购物
德国网上宠物店:Zoobio
2018/05/23 全球购物
Java基础面试题
2014/07/19 面试题
员工试用期考核自我鉴定
2014/04/13 职场文书
公务员考察材料范文
2014/12/23 职场文书
幼师自荐信范文
2015/03/06 职场文书
推荐信范文大全
2015/03/27 职场文书
2019商业计划书格式、范文
2019/04/24 职场文书
签证扫盲贴,41个常见签证知识,需要的拿走
2019/08/09 职场文书
Win11显卡控制面板打开显卡设置方法
2022/04/20 数码科技