python - BeautifulSoup:查找多个嵌套元素的类值
问题描述
我正在尝试使用 BeautifulSoup (Python) 在多个嵌套元素中查找类值,如下所示:
<li class="Top Class Name" dataid="60">
<a class="Name of Sub Class 1" href="www.abc.com" dataid="61">
<div class="Class2" dataid="62">
<div class="My Class3" dataid="63"><span dataid="64">This is correct</span></div>
<div class="My Class4" dataid="65">
<svg class="My Class5 Cur(p)" width="20" style="vertical-align:bottom;" height="26" viewBox="0 0 24 24" dataon="filled-circle" dataid="67"><path d="The Path" dataid="66"></path>
</svg>
</div>
</div>
</div>
</a>
</li>
使用soup.find_all("li", attrs={"class": "Top Class Name"})
我能够找到顶级课程。现在我正在寻找的是找到元素的class
名称。svg
所以它应该返回:My Class5 Cur(p)
.
如何才能做到这一点?
谢谢你的帮助。
解决方案
您可以使用 CSS 选择器.Top.Class.Name svg[class]
,然后获取属性class
。
注意,当class=
属性中有空格时,标签有多个类。Soclass="Top Class Name"
表示标签属于Top
类Class
和Name
。对于<svg class="My Class5 Cur(p)">
.
txt = '''
<li class="Top Class Name" dataid="60">
<a class="Name of Sub Class 1" href="www.abc.com" dataid="61">
<div class="Class2" dataid="62">
<div class="My Class3" dataid="63"><span dataid="64">This is correct</span></div>
<div class="My Class4" dataid="65">
<svg class="My Class5 Cur(p)" width="20" style="vertical-align:bottom;" height="26" viewBox="0 0 24 24" dataon="filled-circle" dataid="67"><path d="The Path" dataid="66"></path>
</svg>
</div>
</div>
</div>
</a>
</li>
'''
soup = BeautifulSoup(txt, 'html.parser')
svg = soup.select_one('.Top.Class.Name svg[class]')
print(svg['class'])
印刷:
['My', 'Class5', 'Cur(p)']
更多关于CSS 选择器的信息。
推荐阅读
- amazon-web-services - 我如何从前端获取输入字符串?
- git - 使用启动脚本从 Gitlab 存储库部署服务时出现问题
- android - 用于 EditText 的具有数字和基本数学运算的键盘
- c# - StackExchange.Redis 使用哈希真的很慢 = C# ASP.NET Core 3.0 和 Docker
- dynamics-crm - Dynamics 365 中的解决方案检查器
- ionic4 - 打字稿问题 this.ref.push() 不起作用
- php - 如何在 LinkedIn 等 WoWonder Feed 中的个人资料名称下显示自定义字段?
- r - R 在子集()期间删除变量标签
- php - Laravel 应用程序在 cpanel 中速度非常慢,有没有办法让它更快?
- database - 使用 kubernetes helm deployement 进行数据库迁移