beautifulsoup 解析网页
beautifulsoup 解析网页
前一篇文章讲解了一点用re提取信息的方法,但是这种方法很麻烦,需要去仔细核对多个链接才能总结出规律,而且规律普适性不强,有兴趣的可以参考如下链接:
re模块复习
这里再讲一种特殊的方法,采用Beautiful 模块直接解析网页来获取想要的数据。
什么是Beautiful Soup?接着往下看。
一、介绍
Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式.Beautiful Soup会帮你节省数小时甚至数天的工作时间。以下全部使用 Beautiful Soup 4版本。
更多介绍参考其说明文档:https://beautifulsoup.readthedocs.io/zh_CN/v4.4.0/
二、安装调用
安装很简单,直接pip
pip install beautifulsoup4
它的调用很奇怪,因为它封装在bs4中,所以调用如下:
from bs4 import BeautifulSoup
说白了,Beautiful Soup就是通过某种解析方式,把原始的html代码美化成易读的格式,然后才通过其select方法或者直接定位来抽取需要的数据。
1. 其基本语法:
# soup就是美化完的代码
soup = BeautifulSoup(res.text,features="lxml")
soup
原始的res.text是这样的

美化后的是这样的,完全和网页的样式一致:

2. 参数详解:
常用的参数就两个
markup:需要解析的对象
features:指定具体的解析方式,如果不指定,Beautiful Soup选择最合适的解析器来解析这段文档。
就目前,Beautiful Soup支持如下几种解析方式
| 解析器 | 使用方法 | 优势 | 劣势 |
|---|---|---|---|
| Python标准库 | BeautifulSoup(markup, “html.parser”) | 内置,速度中等,容错里强 | 之前的版本不好 |
| lxml HTML 解析器 | BeautifulSoup(markup, “lxml”) | 速度快,容错里强 | 需要安装C语言库 |
| lxml XML 解析器 | BeautifulSoup(markup, “xml”) | 速度快,唯一支持XML的解析器 | 需要安装C语言库 |
| html5lib | BeautifulSoup(markup, “html5lib”) | 最好的容错性,以浏览器的方式解析文档 | 速度慢 |
推荐使用lxml作为解析器,因为效率更高。但其他的也可以解析,只是解析的呈现效果有些许差异。
三、 定位、提取数据:
说到定位和提取,就不得不说说HTML的结构了。首先看一个网页的结构

3.1 结构释义
基本标签
-
称为根元素,所有的网页元素都在中
- 元素用于定义文档的头部,定义字体、美化样式、标题等等
-
头部元素含有有:
