python - 查找带有“x”类的元素,忽略带有“x”和更多类的元素
问题描述
我的 HTML 看起来像这样:
<span class="x">Text 1</span>
<span class="x y">Text 2</span>
<span class="x">Text 3</span>
<span class="x z">Text 4</span>
我可以用它来找到班级的所有孩子x
:
for span_text in soup_subset.findChildren('span', class_='x'):
print (span_text)
这将输出仅具有x
类的 span 元素的文本,以及具有x
和另一个类的文本。
我如何找到只有x
班级的孩子,而忽略那些有x
和其他班级的孩子?
解决方案
使用 CSS 选择器获取仅包含该类的跨度标签。
soup.select("span[class='x']")
代码
from bs4 import BeautifulSoup
html ="""
<span class="x">Text 1</span>
<div class="x">Div Text 1</div>
<span class="x y">Text 2</span>
<span class="x">Text 3</span>
<span class="x z">Text 4</span>
"""
soup = BeautifulSoup(html, 'html.parser')
print(soup.select("span[class='x']"))
输出
[<span class="x">Text 1</span>, <span class="x">Text 3</span>]
参考
推荐阅读
- node.js - 如何使反应路由器和 nodejs/express 路由在 cpanel/共享主机中一起工作?
- python - 普通终端和 PyCharm 终端的区别?
- salesforce - SFCC(需求软件)获取注册客户的生日
- aws-lambda - 状态机中的阶跃函数停止转换到下一个状态
- c# - 如何从 .NET 框架 C# 中的文本框中删除双逗号?
- php - 无法打开输入文件工匠
- r - 移动平均线然后二值化如果 > 则 MA
- amazon-web-services - 有什么方法可以找到 mac-ec2 的用户数据执行日志,类似于我们为 linux-ec2 找到的(/var/log/cloud-init.log)?
- php - 在 Laravel 8 中使用 maatwebsite laravel excel 导入数据
- express - 在子表达式中传递“this”