我即将解析此网址:http://online.wsj.com/public/page/news-wall-street-heard.html?dsk=y
Document jDoc = Jsoup.connect(url1).get();
System.out.println(jDoc1.text());
但是第二行(上面)的输出是textarea里面的TAGS +其他标签的文本。输出如下:
..
..
<ul class="">
<li><a data-time="1dy" data-frequency="1mi" class="mdm_time">1 Day</a></li>
<li><a data-time="5dy" data-frequency="15mi" class="mdm_time">5 Days</a></li>
..
..
所有html都会被打印(内部的内容)和其他标签的文本。我想要从Doc中删除此标记,或者想将其作为元素,以便我可以将其删除。
希望,我能够清楚地解释一切。请帮我解决这个问题。
编辑:
根据建议,我这样做了:
System.out.println(jDoc1.select("textarea"));
输出来的是:
textarea id="wsj_autocomplete_template" style="display:none">
<div>
<div class="acHeadline hidden" >
</div>
<div class="dropdownContainerClass">
<div class="suggestionblock hidden" templateType="C1">
....
...
..
当然它正在选择textarea,但无法解析内部元素。可能是由于&amp; lt而不是&lt;标签。有没有解决方法呢?
答案 0 :(得分:0)
如果我理解正确,你想要的是这个
Elements textareas = Jsoup.connect(url1).get().select("textarea");
for (Element textarea : textareas) {
Elements elements = textarea.select("*");
for (Element element : elements) {
System.out.println(element.ownText());
}
}
答案 1 :(得分:0)
如果要删除整个文本区域标记,请使用doc.select("textarea").remove();
。或者,如果您想获得textarea的内容,请使用doc.select("textarea").text()
。请注意,我使用的是text()
方法,而不是toString()
或html()
方法。这给出了确切的文本而不是html转义码。
如果你想操纵这个html,你可以再次解析它,如Document textareaDoc = Jsoup.parseBodyFragment(doc.select("textarea").text());
实施例
import java.io.IOException;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
public class WSJParser {
public static void main(String[] args) {
String url = "http://online.wsj.com/public/page/news-wall-street-heard.html?dsk=y";
try {
Document doc = Jsoup.connect(url).get();
//doc.select("textarea").remove(); // Removes the entire text area tag
Document textareaDoc = Jsoup.parseBodyFragment(doc.select("textarea").text());
System.out.println(textareaDoc);
} catch (IOException e) {
e.printStackTrace();
}
}
}