gpt4 book ai didi

Python Beautiful Soup unwrap() 没有按预期工作 - 想要提取标签的内容

转载 作者:行者123 更新时间:2023-12-01 21:49:43 25 4
gpt4 key购买 nike

我刚开始使用 Beautiful Soup,无法理解为什么 unwrap() 会像我的情况那样工作。

我有 python 3.6.9beautifulsoup4 4.8.2

我的输入 HTML 是:

 html='''
<html>
<head>
<meta charset="utf-8"/>
<link rel="stylesheet" type="text/css" href="../../common/style.css"/>
</head>
<body>
<div id="content">
<h3 HEAD /h3>
<div class="myclass">
<br>
MY TEXT
<br>
</div>
<h3 HEAD2 /h3>
<div class="myclass">
<br>
MY TEXT 2
<br>
</div>
</div>
</body>
</html>
'''

我想获取 div 的内容,其 id 为“content”。我认为这可以通过使用 unwrap() 来完成:

soup=BeautifulSoup(html, 'lxml')    
content=soup.find('div', {"id": "content"}).unwrap()

但这给了我标签,没有它的内容:

打印(内容):

<div id="content"></div>

这里发生了什么?如何在不保留周围标签的情况下正确提取标签内容?

我期望的输出是:

   <h3  HEAD /h3>
<div class="myclass">
<br>
MY TEXT
<br>
</div>
<h3 HEAD2 /h3>
<div class="myclass">
<br>
MY TEXT 2
<br>
</div>

当使用 .children 的方法时,我在附加到 BeautifulSoup 对象时遇到了转义标签的问题:

final_content=''.join([str(i) for i in content.children]) 
body.append(final_content)

这导致:

&lt;h3 head=""&gt;
&lt;div class="myclass"&gt;
&lt;br/&gt;
MY TEXT
&lt;br/&gt;
&lt;/div&gt;
&lt;h3 head2=""&gt;
&lt;div class="myclass"&gt;
&lt;br/&gt;
MY TEXT 2
&lt;br/&gt;
&lt;/div&gt;
&lt;/h3&gt;&lt;/h3&gt;</div>

最佳答案

TL;DR:打印soup,而不是content

我遇到了同样的问题,无法弄清楚为什么 unwrap() 没有返回我想要的结果。原因是它的工作方式与我们预期的略有不同。

unwrap() 清除 initial soup 中的标签并返回标签。我们使用 soup.find() 保存在其他变量中的任何内容都将只包含标签,而不包含内容。

关于Python Beautiful Soup unwrap() 没有按预期工作 - 想要提取标签的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59684157/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com