python爬虫:四种数据解析库提取数据速度对比

yumo6664个月前 (04-22)技术文章29

本文以一个小说网站页面为例,提取里面的网址和各章节的名称

将各种数据库解析的速度进行对比,对比对象为以下4种方式:

1>>>正则表达式

2>>>BeautifulSoup(忽略其中的css选择器需调用的select方法)

3>>>parsel(包含使用xpath提取和css选择器提取)

4>>>lxml库etree模块XPath

对比速度时, >表示 速度快于 >>表示速度远快于 =表示速度差不多

---------------------

操作思路:

1>>>下载一个小说网页后保存为html格式文件,

2>>>依次用不同的解析数据工具提取所需数据并记录耗时.

3>>>模拟对提取到的数据(url和章节名称)进行字符串操作(网址拼接,章节名替换之类的),记录耗时

4>>>将步骤2的耗时数据与步骤3的耗时数据依次对比

代码如下:

运行结果:

对提取出的数据进行字符串操作耗时最快(如果列表数据元素为10万个,速度是原来的1/10)

正则 >> etree(xpath) = parser(xpath) > parser(css) >> BeautifulSoup

---------------------

再重复代码15次,比例结果保留2位小数点为:

可以看到,结果跟上面的得到的比例结果,正则和BeautifulSoup速度毫无争议

至此,可以宣布:

对于提取网页源代码的数据速度

正则 >>[ etree(xpath),parser(xpath), parser(css)] >> BeautifulSoup

---------------------

题外话:

由于:

请求一个网页时间得到整个页面数据大概在0.15-0.3秒左右,大部分在0.27,慢的有1秒

所以解析库提取数据的耗时 一般是比 请求网页得到内容的耗时 小的,(更别提存储提取到的数据了)

故涉及阻塞时间 大于提取数据的时间,异步协程会比多线程,多进程更有优势一点;

反之,亦然. 其中细分可见多进程,多线程,异步协程,单线程使用场景一文

相关文章

个人网站集成js小游戏《圈小猫》教程及源码

今天在某网站浏览帖子的时候,发现帖子被删除了,然后弹出了404页面,页面上集成了一个小游戏,小游戏长什么样子呢?看下面这个图!第一步查看小游戏源码,发现这个小游戏完全是由JavaScript编写的,因...

如何查看网页的HTML源代码?这里提供详细步骤

每个主要的互联网浏览器都允许用户查看任何网页的HTML(超文本标记语言)源代码。以下部分包含有关在每个主要浏览器中查看源代码的多种方法的信息。引言查看网页的源代码时,服务器处理的信息和代码不会出现。例...

网站链接地址抓取助手

想要轻松获取网站的内链,那就赶紧来使用网页链接提取工具,软件是一款功能强大实用的网站内链获取软件,功能给出强大的网站内链获取工具,使用后即可网站内链全部获取,大大提高了工作效率,并且操作简单,使用方便...

贼爽,在Github网页版也能用开发工具看源码了

平时大家在Github上找项目的时候经常会需要去看看这个项目的一些代码,如果是明确的想要这个项目,就会下载到本地,然后导入到开发工具中查看。如果不是很明确,只是想了解下,就会直接在网页上进行查看,大家...

CSS实现的阴影的3D立体文字动画网页源码

大家好,今天给大家介绍一款,炫酷的阴影的3D立体文字动画网页源码(图1)。送给大家哦,获取方式在本文末尾。由两组文字构成,都有阴影,加上左右晃动,3D效果很明显(图2)响应式页面,支持各种分辨率(图3...