获取一个可变的 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 &gt; 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 类名的主要内容,如果未能解决你的问题,请参考以下文章

python 爬虫学习第三课

Python - 分配打印输出csv

跟随小甲鱼up主学习Python 序列上中篇

跟随小甲鱼up主学习Python 序列上中篇

在python中使用递归来组合可变大小的列表

C语言中如何实现可变参函数