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简单程序读取串口信息的方法
Mar 13 Python
Python解析json之ValueError: Expecting property name enclosed in double quotes: line 1 column 2(char 1)
Jul 06 Python
python使用webdriver爬取微信公众号
Aug 31 Python
python实现字符串完美拆分split()的方法
Jul 16 Python
Python 正则表达式爬虫使用案例解析
Sep 23 Python
python如何提取英语pdf内容并翻译
Mar 03 Python
Selenium使用Chrome模拟手机浏览器方法解析
Apr 10 Python
pandas读取csv文件提示不存在的解决方法及原因分析
Apr 21 Python
Python小白学习爬虫常用请求报头
Jun 03 Python
python实现斗地主分牌洗牌
Jun 22 Python
Python NumPy灰度图像的压缩原理讲解
Aug 04 Python
关于Python使用turtle库画任意图的问题
Apr 01 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
Banner程序
2006/10/09 PHP
php 设计模式之 单例模式
2008/12/19 PHP
php 如何获取数组第一个值
2013/08/06 PHP
php调用shell的方法
2014/11/05 PHP
php实现常见图片格式的水印和缩略图制作(面向对象)
2016/06/15 PHP
PHP开发APP端微信支付功能
2017/02/17 PHP
php mysql数据库操作类(实例讲解)
2017/08/06 PHP
PHP call_user_func和call_user_func_array函数的简单理解与应用分析
2019/11/25 PHP
JS维吉尼亚密码算法实现代码
2010/11/09 Javascript
jquery表单验证框架提供的身份证验证方法(示例代码)
2013/12/27 Javascript
JavaScript中最简洁的编码html字符串的方法
2014/10/11 Javascript
nodejs 提示‘xxx’ 不是内部或外部命令解决方法
2014/11/20 NodeJs
JavaScript中Cookies的相关使用教程
2015/06/04 Javascript
浅谈jQuery的offset()方法及示例分享
2015/07/17 Javascript
jQuery简单实现上下,左右滑动的方法
2016/06/01 Javascript
JS+CSS实现下拉刷新/上拉加载插件
2017/03/31 Javascript
详解Vue.js Mixins 混入使用
2017/09/15 Javascript
VUE2.0+Element-UI+Echarts封装的组件实例
2018/03/02 Javascript
javascript面向对象三大特征之封装实例详解
2019/07/24 Javascript
vue-router结合vuex实现用户权限控制功能
2019/11/14 Javascript
详解vue父子组件状态同步的最佳方式
2020/09/10 Javascript
[02:40]DOTA2英雄基础教程 巨牙海民
2013/12/23 DOTA
Python找出list中最常出现元素的方法
2016/06/14 Python
Python 专题一 函数的基础知识
2017/03/16 Python
使用Python通过win32 COM打开Excel并添加Sheet的方法
2018/05/02 Python
什么是Python中的顺序表
2020/06/02 Python
CSS3 画基本图形,圆形、椭圆形、三角形等
2016/09/20 HTML / CSS
激光脱毛、蓝光和护肤:Tria Beauty
2019/03/28 全球购物
同步和异步有何异同,在什么情况下分别使用他们?
2012/12/28 面试题
机械绘图员岗位职责
2013/11/19 职场文书
内容编辑个人求职信
2013/12/10 职场文书
最新奶茶店创业计划书范文
2014/02/08 职场文书
《只有一个地球》教学反思
2014/02/14 职场文书
《学会待客》教学反思
2014/02/22 职场文书
董事长助理工作职责范本
2014/07/01 职场文书
《小乌鸦爱妈妈》教学反思
2016/02/19 职场文书