- Beautiful Soup 教程
- Beautiful Soup - 首页
- Beautiful Soup - 概述
- Beautiful Soup - 网页抓取
- Beautiful Soup - 安装
- Beautiful Soup - 解析页面
- Beautiful Soup - 对象类型
- Beautiful Soup - 检查数据源
- Beautiful Soup - 抓取 HTML 内容
- Beautiful Soup - 通过标签导航
- Beautiful Soup - 通过 ID 查找元素
- Beautiful Soup - 通过 Class 查找元素
- Beautiful Soup - 通过属性查找元素
- Beautiful Soup - 搜索树
- Beautiful Soup - 修改树
- Beautiful Soup - 解析文档的一部分
- Beautiful Soup - 查找元素的所有子元素
- Beautiful Soup - 使用 CSS 选择器查找元素
- Beautiful Soup - 查找所有注释
- Beautiful Soup - 从 HTML 中抓取列表
- Beautiful Soup - 从 HTML 中抓取段落
- BeautifulSoup - 从 HTML 中抓取链接
- Beautiful Soup - 获取所有 HTML 标签
- Beautiful Soup - 获取标签内的文本
- Beautiful Soup - 查找所有标题
- Beautiful Soup - 提取标题标签
- Beautiful Soup - 提取电子邮件 ID
- Beautiful Soup - 抓取嵌套标签
- Beautiful Soup - 解析表格
- Beautiful Soup - 选择第 n 个子元素
- Beautiful Soup - 通过标签内的文本搜索
- Beautiful Soup - 移除 HTML 标签
- Beautiful Soup - 移除所有样式
- Beautiful Soup - 移除所有脚本
- Beautiful Soup - 移除空标签
- Beautiful Soup - 移除子元素
- Beautiful Soup - find 与 find_all 的区别
- Beautiful Soup - 指定解析器
- Beautiful Soup - 比较对象
- Beautiful Soup - 复制对象
- Beautiful Soup - 获取标签位置
- Beautiful Soup - 编码
- Beautiful Soup - 输出格式化
- Beautiful Soup - 美化输出
- Beautiful Soup - NavigableString 类
- Beautiful Soup - 将对象转换为字符串
- Beautiful Soup - 将 HTML 转换为文本
- Beautiful Soup - 解析 XML
- Beautiful Soup - 错误处理
- Beautiful Soup - 故障排除
- Beautiful Soup - 移植旧代码
- Beautiful Soup - 函数参考
- Beautiful Soup - contents 属性
- Beautiful Soup - children 属性
- Beautiful Soup - string 属性
- Beautiful Soup - strings 属性
- Beautiful Soup - stripped_strings 属性
- Beautiful Soup - descendants 属性
- Beautiful Soup - parent 属性
- Beautiful Soup - parents 属性
- Beautiful Soup - next_sibling 属性
- Beautiful Soup - previous_sibling 属性
- Beautiful Soup - next_siblings 属性
- Beautiful Soup - previous_siblings 属性
- Beautiful Soup - next_element 属性
- Beautiful Soup - previous_element 属性
- Beautiful Soup - next_elements 属性
- Beautiful Soup - previous_elements 属性
- Beautiful Soup - find 方法
- Beautiful Soup - find_all 方法
- Beautiful Soup - find_parents 方法
- Beautiful Soup - find_parent 方法
- Beautiful Soup - find_next_siblings 方法
- Beautiful Soup - find_next_sibling 方法
- Beautiful Soup - find_previous_siblings 方法
- Beautiful Soup - find_previous_sibling 方法
- Beautiful Soup - find_all_next 方法
- Beautiful Soup - find_next 方法
- Beautiful Soup - find_all_previous 方法
- Beautiful Soup - find_previous 方法
- Beautiful Soup - select 方法
- Beautiful Soup - append 方法
- Beautiful Soup - extend 方法
- Beautiful Soup - NavigableString 方法
- Beautiful Soup - new_tag 方法
- Beautiful Soup - insert 方法
- Beautiful Soup - insert_before 方法
- Beautiful Soup - insert_after 方法
- Beautiful Soup - clear 方法
- Beautiful Soup - extract 方法
- Beautiful Soup - decompose 方法
- Beautiful Soup - replace_with 方法
- Beautiful Soup - wrap 方法
- Beautiful Soup - unwrap 方法
- Beautiful Soup - smooth 方法
- Beautiful Soup - prettify 方法
- Beautiful Soup - encode 方法
- Beautiful Soup - decode 方法
- Beautiful Soup - get_text 方法
- Beautiful Soup - diagnose 方法
- Beautiful Soup 有用资源
- Beautiful Soup - 快速指南
- Beautiful Soup - 有用资源
- Beautiful Soup - 讨论
Beautiful Soup - 故障排除
如果您在尝试解析 HTML/XML 文档时遇到问题,则更有可能是因为所使用的解析器如何解释该文档。为了帮助您找到并解决问题,Beautiful Soup API 提供了一个 diagnose() 实用程序。
Beautiful Soup 中的 diagnose() 方法是用于隔离常见问题的诊断套件。如果您在理解 Beautiful Soup 对文档的操作方面遇到困难,请将文档作为参数传递给 diagnose() 函数。一个报告将向您展示不同的解析器如何处理文档,并告诉您是否缺少解析器。
diagnose() 方法在 bs4.diagnose 模块中定义。其输出以如下消息开头:
示例
diagnose(markup)
输出
Diagnostic running on Beautiful Soup 4.12.2 Python version 3.11.2 (tags/v3.11.2:878ead1, Feb 7 2023, 16:38:35) [MSC v.1934 64 bit (AMD64)] Found lxml version 4.9.2.0 Found html5lib version 1.1 Trying to parse your markup with html.parser Here's what html.parser did with the markup:
如果它没有找到这些解析器中的任何一个,也会出现相应的提示消息。
I noticed that html5lib is not installed. Installing it may help.
如果提供给 diagnose() 方法的 HTML 文档格式正确,则任何解析器解析的树都将相同。但是,如果格式不正确,则不同的解析器会进行不同的解释。如果您没有得到预期的树,更改解析器可能会有所帮助。
有时,您可能为 XML 文档选择了 HTML 解析器。HTML 解析器在错误地解析文档时会添加所有 HTML 标签。查看输出,您将意识到错误并可以帮助进行更正。
如果 Beautiful Soup 抛出 HTMLParser.HTMLParseError,请尝试更改解析器。
解析错误 HTMLParser.HTMLParseError: malformed start tag 和 HTMLParser.HTMLParseError: bad end tag 均由 Python 的内置 HTML 解析器库生成,解决方法是安装 lxml 或 html5lib。
如果您遇到 SyntaxError: Invalid syntax(在 ROOT_TAG_NAME = '[document]' 行),则这是由于在 Python 3 下运行旧版 Python 2 的 Beautiful Soup,而没有转换代码。
带有消息 No module named HTMLParser 的 ImportError 是因为在 Python 3 下使用了旧版 Python 2 的 Beautiful Soup。
而 ImportError: No module named html.parser - 是由于在 Python 2 下运行 Python 3 版本的 Beautiful Soup 引起的。
如果您收到 ImportError: No module named BeautifulSoup - 通常情况下,这是因为在没有安装 BS3 的系统上运行 Beautiful Soup 3 代码。或者,在编写 Beautiful Soup 4 代码时不知道包名称已更改为 bs4。
最后,ImportError: No module named bs4 - 是因为您在没有安装 BS4 的系统上尝试使用 Beautiful Soup 4 代码。