📜  Beautiful Soup-BeautifulSoup对象

📅  最后修改于: 2020-11-09 14:32:01             🧑  作者: Mango


 

任何BeautifulSoup项目的起点都是BeautifulSoup对象。 BeautifulSoup对象代表用于创建其的输入HTML / XML文档。

我们可以为Beautiful Soup传递字符串或类似文件的对象,其中文件(对象)可以本地存储在我们的计算机或网页中。

最常见的BeautifulSoup对象是-

  • 标签
  • 导航字符串
  • 美丽汤
  • 评论

比较对象是否相等

按照漂亮的汤,如果两个可导航字符串或标记对象表示相同的HTML / XML标记,则它们相等。

现在让我们看下面的示例,其中两个标签被视为相等,即使它们位于对象树的不同部分中,因为它们都看起来像“ Java ”。

>>> markup = "

Learn Python and Java and advanced Java! from Tutorialspoint

" >>> 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

复制美丽汤对象

要创建任何标签或NavigableString的副本,请使用copy.copy()函数,如下所示:

>>> import copy
>>> p_copy = copy.copy(soup.p)
>>> print(p_copy)

Learn Python and Java and advanced Java! from Tutorialspoint

>>>

尽管两个副本(原始副本和副本副本)包含相同的标记,但是两个并不代表相同的对象-

>>> print(soup.p == p_copy)
True
>>>
>>> print(soup.p is p_copy)
False
>>>

唯一真正的区别是,该副本已与原始的Beautiful Soup对象树完全分离,就像在其上调用了extract()一样。

>>> print(p_copy.parent)
None

上面的行为是由于两个不同的标记对象无法同时占用相同的空间。