【问题标题】:Beautiful Soup - Class contains 'a' and not contains 'b'美丽的汤 - 类包含“a”而不包含“b”
【发布时间】:2014-12-06 22:19:09
【问题描述】:

使用bs4 我需要找到一个带有class_=re.compile("viewLicense") 但不是class_="viewLicenseDetails" 的元素

这里是sn-p,

<tr class="viewLicense inactive"></tr>
<tr class="viewLicense"></tr>
<tr id="licenseDetails_552738" class="viewLicenseDetails"</tr>

我想要前两个 tr 而不是最后一个。

有人可以帮忙吗,谢谢

【问题讨论】:

    标签: python-2.7 beautifulsoup


    【解决方案1】:

    以下将找到每个带有 viewLicense 的 tr 标记

    soup.find_all("tr", class_="viewLicense")
    

    因此,它适用于问题中提供的文本:

    >>> soup.find_all("tr", class_="viewLicense")
    [<tr class="viewLicense inactive"></tr>, <tr class="viewLicense"></tr>]
    

    但是,如果您有一个 tr 标记,它同时具有 viewLicenseviewLicenseDetails 类,那么下面将找到所有带有 viewLicensetr 标记,然后删除带有 viewLicenseDetails 的标记:

    >>> both_tags = soup.find_all("tr", class_="viewLicense")
    >>> for tag in both_tags:
    ...     if 'viewLicenseDetails' not in tag.attrs['class']:
    ...             print tag
    

    【讨论】:

      【解决方案2】:

      使用 CSS 选择器?

      results = soup.select('tr.viewLicense')
      

      【讨论】:

        猜你喜欢
        • 2016-04-12
        • 2022-12-18
        • 1970-01-01
        • 2023-04-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-07-31
        • 1970-01-01
        相关资源
        最近更新 更多