jsoup 删除 class
jsoup remove a class
使用 jsoup select 我已经设法提取了以下 html.I 我正在尝试获取 <a id="dd_start"></a>
和 <a id="dd_end"></a>
之间的所有 html 代码.
我用过 obj.first().getElementsByClass("div.dd_outer").remove()
但运气不好。
有什么建议么?
<div class="entry-content" itemprop="text">
<a id="dd_start"></a>
<p><a href="http://blablabla.com/2016/01/16/blablabla/icon-2/#main" rel="attachment wp-att-21"><img class="size-full wp-image-21501 aligncenter" src="http://blablabla.com/wp-content/uploads/16/01/google1.jpg" alt="google-icon" width="100%"></a></p>
<p>blablabla.<br> <span id="more-21499"></span><br> blablabla.</p>
<p>blablabla <a href="https://blablabla.com/blablabla" target="_blank">blablabla</a>. </p>
<a id="dd_end"></a>
<div class="dd_outer">
<div class="dd_inner">
<div id="dd_ajax_float">
<div class="dd_button_v">
</div>
</div>
</div>
</div>
这适用于您发布的代码段。您可能想要进行一些更改以处理边缘情况、错误等。
public static void main(String[] args) throws Exception {
String html = new String(Files.readAllBytes(Paths.get("input.html")));
Document doc = Jsoup.parse(html);
Elements section = new Elements();
Element sibling = doc.getElementById("dd_start").nextElementSibling();
do {
section.add(sibling);
sibling = sibling.nextElementSibling();
} while(!sibling.id().equals("dd_end"));
System.out.println(section);
}
关于删除某个部分的问题,你可以这样做:
Document doc = Jsoup.parse(html);
doc.select("div.dd_outer").first().remove();
System.out.println(doc);
这将从您的 Document
对象中删除该部分。注意 remove()
之前调用的 first()
。这个很重要。您想要调用 Element
的 remove()
,这就是 first()
returns。这将从 parentNode
中删除元素,从而影响 Document
对象。如果不调用first()
改成这个
doc.select("div.dd_outer").remove();
您将调用 Elements
的 remove()
,这就是 select()
returns。这只是一个集合(各种列表包装器)。因此,如果您调用 remove()
,您将影响 select()
而不是 Document
的结果。因此,如果您尝试打印 doc
变量,您将看到您删除的内容仍然存在。
使用 jsoup select 我已经设法提取了以下 html.I 我正在尝试获取 <a id="dd_start"></a>
和 <a id="dd_end"></a>
之间的所有 html 代码.
我用过 obj.first().getElementsByClass("div.dd_outer").remove()
但运气不好。
有什么建议么?
<div class="entry-content" itemprop="text">
<a id="dd_start"></a>
<p><a href="http://blablabla.com/2016/01/16/blablabla/icon-2/#main" rel="attachment wp-att-21"><img class="size-full wp-image-21501 aligncenter" src="http://blablabla.com/wp-content/uploads/16/01/google1.jpg" alt="google-icon" width="100%"></a></p>
<p>blablabla.<br> <span id="more-21499"></span><br> blablabla.</p>
<p>blablabla <a href="https://blablabla.com/blablabla" target="_blank">blablabla</a>. </p>
<a id="dd_end"></a>
<div class="dd_outer">
<div class="dd_inner">
<div id="dd_ajax_float">
<div class="dd_button_v">
</div>
</div>
</div>
</div>
这适用于您发布的代码段。您可能想要进行一些更改以处理边缘情况、错误等。
public static void main(String[] args) throws Exception {
String html = new String(Files.readAllBytes(Paths.get("input.html")));
Document doc = Jsoup.parse(html);
Elements section = new Elements();
Element sibling = doc.getElementById("dd_start").nextElementSibling();
do {
section.add(sibling);
sibling = sibling.nextElementSibling();
} while(!sibling.id().equals("dd_end"));
System.out.println(section);
}
关于删除某个部分的问题,你可以这样做:
Document doc = Jsoup.parse(html);
doc.select("div.dd_outer").first().remove();
System.out.println(doc);
这将从您的 Document
对象中删除该部分。注意 remove()
之前调用的 first()
。这个很重要。您想要调用 Element
的 remove()
,这就是 first()
returns。这将从 parentNode
中删除元素,从而影响 Document
对象。如果不调用first()
改成这个
doc.select("div.dd_outer").remove();
您将调用 Elements
的 remove()
,这就是 select()
returns。这只是一个集合(各种列表包装器)。因此,如果您调用 remove()
,您将影响 select()
而不是 Document
的结果。因此,如果您尝试打印 doc
变量,您将看到您删除的内容仍然存在。