一 前言
Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库;其强大的提取能力让知识追寻者放弃了使用正则匹配查找HTML节点;Beautifu Soup 其能直接通过HTML标签获取相应的节点,或者通过函数直接获得节点,大大提高了编程人员的开发效率;看完本篇学不会Beautiful Soup ,满天神佛都救不了你;觉得知识追寻者的文章有点意思,关注加点赞谢谢;
二 Beautiful Soup 简单使用
Beautiful Soup 的解释器如下:
解释器 | 使用示例 |
---|---|
Python标准库 | BeautifulSoup(markup, "html.parser") |
lxml HTML 解析器 | BeautifulSoup(markup, "lxml") |
lxml XML 解析器 | BeautifulSoup(markup, "xml") |
html5lib | BeautifulSoup(markup, "html5lib") |
本篇的解释器读者可以使用Python标准库或者lxml HTML 解析器都可以;下午中获取标签其实都是获取标签对象,读者谨记;
简要概括下属性的说明:
属性 | 含义 |
---|---|
soup.tag.name | 获取标签tag名称 |
soup.tag.string | 获取标签tag文本内容 |
soup.tag | 获取标签tag |
soup.tag.attrs | 获取标签tag所有属性 |
soup.tag.attrs['class'] | 获取标签指定class的属性 |
soup.tag1.tag2 | 获取子标签tag2 |
soup.tag.contents | 获取tag所有直接子标签以列表输出 |
soup.tag.children | 获取直接子标签,返回生成器 |
soup.tag.descendants | 获取所有子标签,返回生成器 |
soup.tag.parent | 获取直接父节点 |
soup.tag.parents | 获取祖先节点,返回生成器 |
soup.tag.next_sibling | 获取后一个兄弟节点 |
soup.tag.previous_sibling | 获取前一个兄弟节点 |
soup.tag.next_siblings | 获取后一个兄弟节点,返回生成器 |
soup.tag.previous_siblings | 获取前一个兄弟节点,返回生成器 |
2.1 格式化HTML
- 实例化一个Beautiful Soup 实例,入参是HTML,和html.parser
- 调用
prettify()
方法会格式化HTML文档
# -*- coding: utf-8 -*- import requests from bs4 import BeautifulSoup html = """
;,
2.2 获取标签节点
- 调用soup.dt 会直接获得第一个匹配到dt标签对象;
# -*- coding: utf-8 -*- import requests from bs4 import BeautifulSoup html = """