教育行业A股IPO第一股(股票代码 003032)

全国咨询/投诉热线:400-618-4000

Python爬虫支持的网页解析技术有几种?这几种技术有什么特点?

更新时间:2021年04月12日14时48分 来源:传智教育

传智教育-一样的教育,不一样的品质


了解了网页的数据和结构以后,我们可以借助网页解析器(用于解析网页的工具)从网页中解析和提取出有价值的数据,或者是新的URL列表,过程如图1所示。为此,Python支持一些解析网页的技术,分别为正则表达式、XPath、Beautiful Soup和JSONPath,其中:

针对文本的解析,有正则表达式;

针对HTML/XML的解析,有XPath、Beautiful Soup、正则表达式;

针对JSON的解析,有JSONPath。


数据解析技术

图1 解析网页的示意图


那么,这几种技术有什么区别呢?

正则表达式基于文本的特征来匹配或查找指定的数据,它可以处理任何格式的字符串文档,类似于模糊匹配的效果。

XPath和Beautiful Soup基于HTML/XML文档的层次结构来确定到达指定节点的路径,所以它们更适合处理层级比较明显的数据。

JSONPath专门用于JSON文档的数据解析。

针对不同的网页解析技术,Python分别提供了不同的模块或者库来支持。其中,re模块支持正则表达式语法的使用,lxml库支持XPath语法的使用,json模块支持JSONPath语法的使用。此外,Beautiful Soup本身就是一个Python库,官方推荐使用beautifulsoup4进行开发。

正则表达式、XPath和Beautiful Soup都能实现网页的解析,那么实际开发中应该如何选择呢?接下来,通过一张表来比较一下re、lxml和beautifulsoup4的性能,如表1所示。

表1 解析工具的性能比较

抓取工具 速度 使用难度 安装难度
re                                      最快                   困难                       无(内置)                  
lxml 简单 一般
beautifulsoup4 最简单 简单
lxml库是用C语言编写的,beautifulsoup4库是用Python编写的,所以性能会差一些。但是,beautifulsoup4的API非常人性化,用起来比较简单,而lxml使用的XPath语法写起来比较麻烦,所以开发效率不如beautifulsoup4。


此外,lxml只能局部遍历树结构,而beautifulsoup4是载入整个文档,并转换成整个树结构。因此,beautifulsoup4需要花费更多的时间和内存,性能会稍低于lxml。

通过表1中对三种技术的比较,大家在实际开发中可根据具体情况选择适合自己的技术。




猜你喜欢:

Mongodb和MySQL存储爬虫数据的特点是什么?

什么是python爬虫?学习python爬虫难不难?

常用的反反爬虫应对策略

传智教育Python培训

0 分享到:
和我们在线交谈!