Python 使用BeautifulSoup获取元素中的实际内容

Python 使用BeautifulSoup获取元素中的实际内容,python,beautifulsoup,Python,Beautifulsoup,我有一些HTML,如下所示: <textarea>&lt;p&gt;</textarea> 这是: 如果给Beauty Soup一个包含HTML实体的文档,比如 “lquot;”,它们将转换为Unicode字符。如果你 将文档转换为字符串时,Unicode字符将 编码为UTF-8。您将无法恢复HTML实体。默认情况下, 输出时唯一转义的字符是裸符号 和尖括号。这些将转化为&,和, 这样,漂亮的汤不会无意中生成无效的HTML或 XML 不过,您可以恢

我有一些HTML,如下所示:

<textarea>&lt;p&gt;</textarea>
这是:

如果给Beauty Soup一个包含HTML实体的文档,比如 “lquot;”,它们将转换为Unicode字符。如果你 将文档转换为字符串时,Unicode字符将 编码为UTF-8。您将无法恢复HTML实体。默认情况下, 输出时唯一转义的字符是裸符号 和尖括号。这些将转化为
&
, 这样,漂亮的汤不会无意中生成无效的HTML或 XML

不过,您可以恢复实体的输出状态:

In [1]: import bs4

In [2]: doc = bs4.BeautifulSoup("<textarea>&lt;p&gt;</textarea>", "html.parser")

In [3]: textarea = doc.select_one("textarea")

In [4]: textarea.unwrap()
Out[4]: <textarea></textarea>

In [5]: print(doc)
&lt;p&gt;
[1]中的
:导入bs4
在[2]中:doc=bs4.beautifulsou(“p”,“html.parser”)
在[3]中:textarea=doc。选择一个(“textarea”)
在[4]:textarea.unwrap()中
出[4]:
In[5]:打印(单据)
P

No
。string
是标记中呈现的内容。编码是
,但实际上它意味着你想要写
,我不想要呈现的内容。我知道编码是
。我正在检查用户内容是否已正确转义,
脚本之间有很大区别!如何检索实际内容?是的,但是在
的情况下,它将不会显示在
.string
属性中:然后必须迭代标记及其(标记-)子项。请参见编辑,我已尝试迭代子项。我做错了吗?是的,那是个短信孩子。如果打印
type(c)
,您将看到它生成了
bs4.element.NavigableString
。如果它是一个标记,比如

,那么它将是一个
bs4.element.tag
>>> for c in doc.select("textarea")[0].children:
...   print(c)
... 
<p>
In [1]: import bs4

In [2]: doc = bs4.BeautifulSoup("<textarea>&lt;p&gt;</textarea>", "html.parser")

In [3]: textarea = doc.select_one("textarea")

In [4]: textarea.unwrap()
Out[4]: <textarea></textarea>

In [5]: print(doc)
&lt;p&gt;