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数组遍历的简单实现方法小结
Apr 27 Python
python 把数据 json格式输出的实例代码
Oct 31 Python
Django框架教程之正则表达式URL误区详解
Jan 28 Python
python通过zabbix api获取主机
Sep 17 Python
详解Django+Uwsgi+Nginx 实现生产环境部署
Nov 06 Python
python中bs4.BeautifulSoup的基本用法
Jul 27 Python
python实现知乎高颜值图片爬取
Aug 12 Python
深入学习python多线程与GIL
Aug 26 Python
python实现人机猜拳小游戏
Feb 03 Python
python如何调用java类
Jul 05 Python
python基于exchange函数发送邮件过程详解
Nov 06 Python
Python实现一个论文下载器的过程
Jan 18 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读取txt文件的内容并赋值给数组的代码
2011/11/03 PHP
PHP删除数组中空值的方法介绍
2014/04/14 PHP
PHP Curl出现403错误的解决办法
2014/05/29 PHP
php打印一个边长为N的实心和空心菱型的方法
2015/03/02 PHP
详解WordPress中用于更新和获取用户选项数据的PHP函数
2016/03/08 PHP
使用php自动备份数据库表的实现方法
2017/07/28 PHP
Laravel如何使用Redis共享Session
2018/02/23 PHP
将jQuery应用于login页面的问题及解决
2009/10/17 Javascript
jquery配合css简单实现返回顶部效果
2013/09/30 Javascript
JavaScript程序员应该知道的45个实用技巧
2014/03/04 Javascript
JavaScript实现的图像模糊算法代码分享
2014/04/22 Javascript
JavaScript判断表单中多选框checkbox选中个数的方法
2015/08/17 Javascript
js仿小米官网图片轮播特效
2016/09/29 Javascript
javascript 正则表达式分组、断言详解
2017/04/20 Javascript
浅谈webpack SplitChunksPlugin实用指南
2018/09/17 Javascript
JavaScript中this用法学习笔记
2019/03/17 Javascript
用node.js写一个jenkins发版脚本
2019/05/21 Javascript
JavaScript中的执行环境和作用域链
2020/09/04 Javascript
[06:25]第二届DOTA2亚洲邀请赛主赛事第二天比赛集锦.mp4
2017/04/03 DOTA
python输出指定月份日历的方法
2015/04/23 Python
深入解析Python中的__builtins__内建对象
2016/06/21 Python
Python中执行存储过程及获取存储过程返回值的方法
2017/10/07 Python
python base64库给用户名或密码加密的流程
2020/01/02 Python
python代码xml转txt实例
2020/03/10 Python
Python pip安装模块提示错误解决方案
2020/05/22 Python
Css3+Js制作漂亮时钟(附源码)
2013/04/24 HTML / CSS
video实现有声音自动播放的实现方法
2020/05/20 HTML / CSS
国外最大的眼镜网站:Coastal
2017/08/09 全球购物
几个SQL的面试题
2014/03/08 面试题
大班上学期幼儿评语
2014/04/30 职场文书
C++程序员求职信
2014/05/07 职场文书
单位授权委托书范本
2014/09/26 职场文书
幼儿园教师工作总结2015
2015/04/02 职场文书
python文件名批量重命名脚本实例代码
2021/04/22 Python
Element实现动态表格的示例代码
2021/08/02 Javascript
win10音频服务未响应怎么解决?win10音频服务未响应未修复的解决方法
2022/08/14 数码科技