【问题标题】:Ignore one div class in BeautifulSoup find_all in Python 3忽略 Python 3 中 BeautifulSoup 中的一个 div 类 find_all
【发布时间】:2022-01-04 09:43:54
【问题描述】:

我想在使用 find_all 时忽略一个类。我遵循了这个解决方案Select all divs except ones with certain classes in BeautifulSoup

我的 div 有点不同,我想忽略 description-0

<div class="abc">...</div>
<div class="parent">
    <div class="description-0"></div>
    <div class="description-1"></div>
    <div class="description-2"></div>
</div>
<div class="xyz">...</div>

以下是我的代码

classToIgnore = ["description-0"]
all = soup.find_all('div', class_=lambda x: x not in classToIgnore)

它正在读取页面上的所有 div,而不仅仅是带有“descriptions-n”的那些。如何解决?

【问题讨论】:

    标签: python python-3.x beautifulsoup


    【解决方案1】:

    使用regex,例如:

    import re
    
    from bs4 import BeautifulSoup
    
    sample_html = """<div class="abc">...</div>
    <div class="description-0"></div>
    <div class="description-1"></div>
    <div class="description-2"></div>
    <div class="xyz">...</div>"""
    
    classes_regex = (
        BeautifulSoup(sample_html, "lxml")
        .find_all("div", {"class": (re.compile(r"description-[1-9]"))})
    )
    print(classes_regex)
    

    输出:

    [<div class="description-1"></div>, <div class="description-2"></div>]
    

    【讨论】:

    • 抱歉,您错过了主要要求。我想忽略“description-0”并从 description-1/2/3 中读取所有 div ....
    • 我刚刚更新了答案。
    猜你喜欢
    • 2017-06-21
    • 2016-05-09
    • 1970-01-01
    • 1970-01-01
    • 2020-07-27
    • 2020-09-20
    • 2019-03-07
    • 2021-10-01
    • 1970-01-01
    相关资源
    最近更新 更多