- Beautiful Soup教程
- Beautiful Soup - 主页
- Beautiful Soup - 概述
- Beautiful Soup - 安装
- Beautiful Soup - 汤页面
- Beautiful Soup - 各种物体
- Beautiful Soup - 按标签导航
- Beautiful Soup - 寻找树
- Beautiful Soup-修改树
- Beautiful Soup - 编码
- Beautiful Soup - 美丽的物体
- 仅解析文档的部分
- Beautiful Soup - 故障排除
- Beautiful Soup有用的资源
- Beautiful Soup - 快速指南
- Beautiful Soup - 有用的资源
- Beautiful Soup - 讨论
Beautiful Soup - 美丽的物体
任何 BeautifulSoup 项目的起点都是 BeautifulSoup 对象。BeautifulSoup 对象表示用于创建它的输入 HTML/XML 文档。
我们可以为 Beautiful Soup 传递一个字符串或类似文件的对象,其中文件(对象)要么本地存储在我们的机器中,要么存储在网页中。
最常见的 BeautifulSoup 对象是 -
- 标签
- 导航字符串
- Beautiful Soup
- 评论
比较对象是否相等
根据Beautiful Soup,如果两个可导航字符串或标签对象表示相同的 HTML/XML 标记,那么它们是相等的。
现在让我们看下面的示例,其中两个 <b> 标记被视为相等,即使它们位于对象树的不同部分,因为它们看起来都像“<b>Java</b>”。
>>> markup = "<p>Learn Python and <b>Java</b> and advanced <b>Java</b>! from Tutorialspoint</p>" >>> soup = BeautifulSoup(markup, "html.parser") >>> first_b, second_b = soup.find_all('b') >>> print(first_b == second_b) True >>> print(first_b.previous_element == second_b.previous_element) False
但是,要检查两个变量是否引用相同的对象,您可以使用以下命令 -
>>> print(first_b is second_b) False
复制 Beautiful Soup 对象
要创建任何标签或 NavigableString 的副本,请使用 copy.copy() 函数,如下所示 -
>>> import copy >>> p_copy = copy.copy(soup.p) >>> print(p_copy) <p>Learn Python and <b>Java</b> and advanced <b>Java</b>! from Tutorialspoint</p> >>>
尽管两个副本(原始副本和复制副本)包含相同的标记,但两者并不代表同一个对象 -
>>> print(soup.p == p_copy) True >>> >>> print(soup.p is p_copy) False >>>
唯一真正的区别是副本与原始 Beautiful Soup 对象树完全分离,就像在其上调用了 extract() 一样。
>>> print(p_copy.parent) None
上述Behave是由于两个不同的标签对象不能同时占用相同的空间。