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

yumo6668个月前 (04-22)技术文章53

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

将各种数据库解析的速度进行对比,对比对象为以下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秒

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

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

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

相关文章

为了周末带女神一起去看电影,我用Python爬取上万部电影的排名

文章目录一、写在前面好不容易女神喊我去看电影,但是她问我准备看什么,那我得好好准备准备~二、准备工作1、使用的软件私信小编01即可获取大量Python学习资源python 3.8 (来源 免费的)Py...

网页代码过滤 轻松获取专辑目录

通过过滤网页代码,可以将网页上显示不全的长文件名列表完整地提取出来。我有一个含有75个视频文件的《中医诊断学》课件,文件名是以01.RMVB、02.RMVB……75.RMVB这种格式命名的。我希望能找...

亚马逊大卖都在用的那些链接 -- 权威链接

最近不少人在问类似几个问题:“测评时,关键词找不到自己?站外投放什么链接?”所以小编今天好好的说说你可能知道的或者不知道的那些链接:原始链接、重中之重的权威链接、神乎其神的超链接、后来居上的二次链接等...

软网推荐:滚动截图将超长网页“一网打尽”

网页截图是我们最常使用的一个功能,但是一般网页都会超过一屏的页面。所以按照常规的方法进行截屏操作的话,就不能将所有的内容进行截取操作,往往需要进行几次截屏并进行拼接才可以。其实借助一些软件工具,无需如...

如何快速使用urllib爬取网页?

什么是urllib?urllib库是Python内置的HTTP请求库,它可以看做是处理URL的组件集合。urllib库包含了四大模块,具体如下:urllib.request:请求模块urllib.er...

微软网站源码抢先曝光10月6日发布会新品

Yesky天极新闻2015-09-16 13:50:29【Yesky新闻频道消息】日前,微软已经放出了新品发布会邀请函,发布会时间定在10月6日。按照之前曝光的消息,微软有望在本次发布会中发布大量Wi...