【问题标题】:Python, beautiful soup, get all class namePython,美汤,获取所有类名
【发布时间】:2017-05-03 05:26:01
【问题描述】:

给定一个 html 代码,让我们说:

 <div class="class1">
    <span class="class2">some text</span>
    <span class="class3">some text</span>
    <span class="class4">some text</span>
    </div>

如何检索所有类名?即:['class1','class2','class3','class4']

我试过了:

soup.find_all(class_=True)

但它会检索整个标签,然后我需要对字符串做一些正则表达式

【问题讨论】:

    标签: python html class beautifulsoup


    【解决方案1】:

    在检索属性时,您可以treat each Tag instance found as a dictionary。请注意,class 属性值将是一个列表,因为class 是一个特殊的"multi-valued" attribute

    classes = []
    for element in soup.find_all(class_=True):
        classes.extend(element["class"])
    

    或者:

    classes = [value 
               for element in soup.find_all(class_=True) 
               for value in element["class"]]
    

    演示:

    In [1]: from bs4 import BeautifulSoup
    
    In [2]: data = """
       ...: <div class="class1">
       ...:     <span class="class2">some text</span>
       ...:     <span class="class3">some text</span>
       ...:     <span class="class4">some text</span>
       ...: </div>"""
    
    In [3]: soup = BeautifulSoup(data, "html.parser")
    
    In [4]: classes = [value
       ...:            for element in soup.find_all(class_=True)
       ...:            for value in element["class"]]
    
    In [5]: print(classes)
    ['class1', 'class2', 'class3', 'class4']
    

    【讨论】:

    • 演示非常有见地,帮助我完成了我需要的工作。
    猜你喜欢
    • 2021-05-03
    • 2018-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-16
    • 1970-01-01
    • 2012-08-01
    • 2017-12-11
    相关资源
    最近更新 更多