获取一个可变的 python BeautifulSoup 类名
Posted
技术标签:
【中文标题】获取一个可变的 python BeautifulSoup 类名【英文标题】:Get a python BeautifulSoup class name that is variable 【发布时间】:2020-08-19 10:09:48 【问题描述】:我正在尝试使用 Python 和 BeautifulSoup
获取变量类名,它是类栏的子类,但位于 div 中。
<div class="foo">
<div class="bar">
<div class="===>THIS IS THE CLASSNAME I WANT TO GET<===">
<canvas ...></canvas>
<div class="bar2">
<div class="bar3">
我得到“bar”元素没有任何问题:
x = item.find('div', class_="bar")
但是我怎样才能从下面的 div 中访问类名呢?我可以将其作为列表访问,但不能作为字符串访问:
print(x.div.attrs)
> 'class': ['===>THIS'], [IS], [THE], [CLASSNAME], [I], [WANT], [TO], [GET<===],
有什么想法吗?
【问题讨论】:
你试过x['class']
吗?
【参考方案1】:
这是你要找的吗?
x = soup.find('div', class_="bar")
print (*x.div['class'])
或者,如果你想把它放在一个变量中:
x = soup.find('div', class_="bar")
l = x.div['class']
s = " ".join(l)
print (s)
【讨论】:
【参考方案2】:使用select('div.bar > div:nth-of-type(1)')
例子
from bs4 import BeautifulSoup
html = """
<div class="foo">
<div class="bar">
<div class="===>THIS IS THE CLASSNAME I WANT TO GET<===">
<canvas ...></canvas>
<div class="bar2">
<div class="bar3">
"""
soup = BeautifulSoup(html, features='html.parser')
for element in soup.select('div.bar > div:nth-of-type(1)'):
print(element["class"])
打印
['===>THIS', 'IS', 'THE', 'CLASSNAME', 'I', 'WANT', 'TO', 'GET<===']
【讨论】:
@tonispark 让我知道这个答案是否有帮助【参考方案3】:x = soup.find('div', class_="bar")
print (*x.div['class'])
是我正在寻找的答案。非常感谢所有做出贡献的人!
【讨论】:
您应该将以上答案之一标记为正确,无需重新发布答案。以上是关于获取一个可变的 python BeautifulSoup 类名的主要内容,如果未能解决你的问题,请参考以下文章