知道了正则表达式的相关用法,但是一旦正则表达式写的有问题,得到的可能就不是我们想要的结果了。而且对于一个网页来说,都有一定的特殊结构和层级关系,而且有很多节点都有id或class来做区分,所以借助它们的结构和属性来提取也可以。
本随笔内容就来介绍一个强大的解析工作Beautiful Soup,它借助网页的结构和属性等特性来解析网页。有了它,我们不用再去写一些复杂的正则表达式,只需要简单的几条语句,就可以完成网页中某个元素的提取。
1、简介
简单来说,Beautiful Soup 就是Pyhon 的一个HTML 或XML 的解析库,可以用它来方便地从网页中提取数据。官方解释如下:
Beautiful Soup 提供一些简单的、Python式的函数来处理导航、搜索、修改分析树等功能。它是一个工具箱,通过解析分档为用户提供需要抓取的数据,因为简单,所以不需要多少代码就可以写出一个完整的应用程序。
Beautiful Soup 自动将输入文档转换为Unicode 编码,输出文档转换为UTF-8编码。你不需要考虑编码方式,除非文档没有指定一个编码方式,这时你仅仅需要说明一下原始编码方式就可以了。
Beautiful Soup 已成为和lxml、html6lib一样出色的Python解释器,为客户灵活地提供不同的解析策略或强劲的速度。
所以说,利用它可以省去很多繁琐的提取工作,提供了解析效率。
2、准备工作
在开始之前安装好Beautiful Soup 和 lxml
3、解析器
Beautiful Soup 在解析时实际上依赖解析器,它除了支持Python标准库的HTML解析器外,还支持一些第三方解析器,如下图:
解析器 | 使用方法 | 优势 | 劣势 |
Python标准库 | BeautifulSoup(markup,“html.parser”) | ||
lxml HTML解析器 | BeautifulSoup(markuo,"lxml") | ||
lxml XML解析器 | BeautifulSoup(markuo,"xml") | ||
html5lib | BeautifulSoup(markuo,"html5lib") |
原文地址:https://www.cnblogs.com/zhangrenguo/p/10503160.html