在使用Python语言编写爬虫的时候,一般通用流程是先明确需求,确定待采集的网站。然后构建请求头和请求体发送请求给目标服务器,待服务器响应、返回网页内容之后进行数据的解析,最终将解析出来的数据结构化存储于数据库中,如下图所示:
今天以豆瓣电影,复仇者联盟4这个页面为例,来谈一下数据解析过程中常用的三种处理方式,解析目标是抽取复联4豆瓣电影的评分,此例中为8.6。
首先需要获取网页响应内容,通过requests包发送get请求,轻松获取复联4页面HTML代码,存在本地,进行后续解析。
需要解析的html片段如下图所示,div标签下有个strong标签,只需将strong标签中的内容提取就完成任务了。
一、 正则表达式
二、 Beautiful Soup:
三、lxml + cssselect
注:lxml中有多种解析器可以进行选择,本例中采用了lxml.html解析器。其他的还有soupparser和html5lib。具体详情和区别请看此篇博文(lxml.html中几种解析器的区别)https://blog.csdn.net/chroming/article/details/77104874
四、性能对比
对上述三种方式进行性能的对比,每个函数分别执行10次和100次,判断耗时。结果如下:
执行10次,re_pro明显速度较快耗时0.01秒,bs_pro耗时0.7秒,lxml_pro耗时0.074秒
执行100次,re_pro耗时0.05秒,bs_pro耗时5.29秒,lxml_pro耗时0.77秒
总体来看re模块和lxml模块在这次测试中是效率最快的,这一方面是由于re和lxml底层是用C语言实现的,一方面也是因为实际处理文本内容的逻辑并不相同。BeautifulSoup相对使用简单,适合爬虫的新手用于练习,如果对性能有要求的爬虫系统的话,尽量使用lxml去实现。
本文暂时没有评论,来添加一个吧(●'◡'●)