首页 > 解决方案 > JSoup - 删除带有特定单词的标签(以及标签中的所有内容)

问题描述

我有一个网页,其中包含表单的 html 标签

<section class="feature-authorized-retailer pdp-outofstock-js hide">
    <div class="retailer-notification">
        <span>This product is out of stock</span>
    </div>

            <section id="marketing-product-actions" class="product-content-form-marketing-product-actions product-actions">
                <div class="product-content-form-product-actions-primary product-actions-primary">
                    <a class="product-content-form-out-of-stock button secondary">Out of Stock</a>
                </div>
            </section>

</section>

正如您在外部“section”标签中看到的那样,它的类名中有“hide”一词。有没有办法使用JSoup在类名中使用“隐藏”一词来识别这些标签,以便我可以删除它们以及这些标签中的所有html?

标签: htmljsoup

解决方案


要使用 Jsoup 选择元素,您可以使用大多数CSS 选择器

  1. 选择所有具有 class 的元素hide
document.select(".hide")

元素可能包含许多类,但如果其中一个等于,这将匹配hide

它会匹配class="abc hide abc"但不会匹配class="abc abchideabc abc"

  1. class选择属性值包含字符串的所有元素hide
document.select("[class~=hide]")

这个会匹配class="abc hide abc",但也会匹配class="abc abchideabc abc"

要删除选定的元素,请使用document.select(...).remove()


推荐阅读