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与C互相调用的方法详解
Jul 14 Python
Python tkinter实现的图片移动碰撞动画效果【附源码下载】
Jan 04 Python
浅谈dataframe中更改列属性的方法
Jul 10 Python
从运行效率与开发效率比较Python和C++
Dec 14 Python
对Python闭包与延迟绑定的方法详解
Jan 07 Python
Python实现的ftp服务器功能详解【附源码下载】
Jun 26 Python
python调用并链接MATLAB脚本详解
Jul 05 Python
Django中提供的6种缓存方式详解
Aug 05 Python
解决Python中回文数和质数的问题
Nov 24 Python
Pandas时间序列:重采样及频率转换方式
Dec 26 Python
如何用Matlab和Python读取Netcdf文件
Feb 19 Python
python 如何做一个识别率百分百的OCR
May 29 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中批量删除Mysql中相同前缀的数据表的代码
2011/07/01 PHP
php与mysql建立连接并执行SQL语句的代码
2011/07/04 PHP
ThinkPHP发送邮件示例代码
2016/10/08 PHP
PHP实现的mongoDB数据库操作类完整实例
2018/04/10 PHP
YII2框架中behavior行为的理解与使用方法示例
2020/03/13 PHP
Extjs学习笔记之二 初识Extjs之Form
2010/01/07 Javascript
jQuery的学习步骤
2011/02/23 Javascript
Textarea与懒惰渲染实现代码
2012/01/04 Javascript
Knockoutjs的环境搭建教程
2012/11/26 Javascript
关闭浏览器时提示onbeforeunload事件
2013/12/25 Javascript
JavaScript实现的经典文件树菜单效果
2015/09/08 Javascript
关于事件mouseover ,mouseout ,mouseenter,mouseleave的区别
2015/10/12 Javascript
Window.Open打开窗体和if嵌套代码
2016/04/15 Javascript
jQuery简单实现iframe的高度根据页面内容自适应的方法
2016/08/01 Javascript
微信小程序新增的拖动组件movable-view使用教程
2017/05/20 Javascript
微信小程序分页加载的实例代码
2017/07/11 Javascript
微信小程序用户自定义模版用法实例分析
2017/11/28 Javascript
vue指令只能输入正数并且只能输入一个小数点的方法
2018/06/08 Javascript
使用jQuery如何写一个含验证码的登录界面
2019/05/13 jQuery
python基于隐马尔可夫模型实现中文拼音输入
2016/04/01 Python
Python + Flask 实现简单的验证码系统
2019/10/01 Python
详解Python的爬虫框架 Scrapy
2020/08/03 Python
MCM英国官网:奢侈皮具制品
2017/04/18 全球购物
美国社交购物市场:MassGenie
2019/02/18 全球购物
阿联酋航空丹麦官方网站:Emirates DK
2019/08/25 全球购物
.NET remoting的两种通道是什么
2016/05/31 面试题
大学生求职简历的自我评价
2013/10/14 职场文书
机关财务管理制度
2014/01/17 职场文书
参观考察邀请函范文
2014/01/29 职场文书
幼儿园中班上学期评语
2014/04/18 职场文书
银行职员自我鉴定
2014/04/20 职场文书
市场推广策划方案
2014/06/02 职场文书
校运会通讯稿
2015/07/18 职场文书
2016年第16个全民国防教育日宣传活动总结
2016/04/05 职场文书
优秀的商业计划书,让融资一步到位
2019/05/07 职场文书
2019下半年英语教师的教学工作计划(3篇)
2019/09/25 职场文书