- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我刚开始使用 Beautiful Soup,无法理解为什么 unwrap()
会像我的情况那样工作。
我有 python 3.6.9
和 beautifulsoup4 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)
这导致:
<h3 head="">
<div class="myclass">
<br/>
MY TEXT
<br/>
</div>
<h3 head2="">
<div class="myclass">
<br/>
MY TEXT 2
<br/>
</div>
</h3></h3></div>
最佳答案
TL;DR:打印soup
,而不是content
我遇到了同样的问题,无法弄清楚为什么 unwrap()
没有返回我想要的结果。原因是它的工作方式与我们预期的略有不同。
unwrap()
清除 initial soup 中的标签并返回标签。我们使用 soup.find()
保存在其他变量中的任何内容都将只包含标签,而不包含内容。
关于Python Beautiful Soup unwrap() 没有按预期工作 - 想要提取标签的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59684157/
使用登录后,我想吐出用户名。 但是,当我尝试单击登录按钮时, 它给了我力量。 我看着logcat,但是什么也没显示。 这种编码是在说。 它将根据我在登录屏幕中输入的名称来烘烤用户名。 不会有任何密码。
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎是题外话,因为它缺乏足够的信息来诊断问题。 更详细地描述您的问题或include a min
我是一名优秀的程序员,十分优秀!