编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

有这三种方式,使用Python抽取网页内容不用愁

wxchong 2024-08-12 02:21:08 开源技术 21 ℃ 0 评论

在使用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去实现。

欢迎大家留言讨论,提出宝贵意见建议,喜欢的朋友也可以关注本头条号,【玩转Python】将持续为大家提供优质的技术内容。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表