使用Jsoup解析HTML div标签

时间:2014-03-19 10:28:03

标签: java jsoup

我试图从这些div标签中获取文本,但它们都没有返回任何内容:

HTML:

<div id="comments" class="part comments last"><script type="text/rocketscript" data-    rocketsrc="http://sabq.org/js/parts/comments/global.js?1324675506" data-      rocketoptimized="true"></script>
<h2 class="header">التعليقات (23)</h2>

<div id="comment_5946146" class="item
                                            ">
<h4 class="direction1">
<span class="serial">1</span> *محمد * </h4>
<p class="direction1"><span class="date-time">17 جمادى الأولى 1435 | 12:46 AM</span></p>
<p class="like-buttons">
<span class="like " title="أعجبني"><span class="value">5</span></span>
<span class="sep">-</span>
<span class="unlike " title="لم يعجبني"><span class="value">0</span></span>
<input type="hidden" name="class" value="Comment">
<input type="hidden" name="id" value="5946146">
</p>
<br clear="all">
<div class="message">هؤلاء أشخاص لم يجدوا سبيلاً لطلب الرزق إلا بهذه الطريقة فكفاكم تضييقاً وخناقاً عليهم حتى في مصادر رزقهم ....</div>

</div>

我想得到div类“消息”和h4标签内的文字和跨度“date-time” 我试着:

document.select("div.message");

document.select("div.comments").select("div.message");

但他们没有用。

1 个答案:

答案 0 :(得分:1)

在5个案例的情况下对你的html进行了尝试并且它们都运行正常,只是一点点注意事项 - 您正在使用Elements <检索Element的集合,而不只是单个document.select("div.message"); / p>

代码:

 Document document = Jsoup.parse(new File("some.html"),"utf-8");
    Element message = document.select("div.message").first();
    Element span = document.select("span.date-time").first();
    Element comments = document.select("div.comments").first();
    Element h4 = document.select("h4.direction1").first();
    Element test = document.select("div.comments").select("div.message")
                    .first();

    System.out.println(message.text());
    System.out.println(span.text());
    System.out.println(comments.text());
    System.out.println(h4.text());
    System.out.println(test.text());

给出;

م حتى في مصادر رزقهم ....
17 جمادى الأولى 1435 | 12:46 AM
التعليقات (23) 1 *محمد * 17 جمادى الأولى 1435 | 12:46 AM 5 - 0 هؤلاء أشخاص لم يجدوا سبيلاً لطلب الرزق إلا بهذه الطريقة فكفاكم تضييقاً وخناقاً عليهم حتى في مصادر رزقهم ....
1 *محمد *
هؤلاء أشخاص لم يجدوا سبيلاً لطلب الرزق إلا بهذه الطريقة فكفاكم تضييقاً وخناقاً عليهم حتى في مصادر رزقهم ....

PS:我使用.first()来证明所用选择器的有效性,因为你的html具有独特的非重复组合。如果每个选择器有多个结果,您可以迭代集合并获得单个结果,如:

Elements message = document.select("div.message");

for (Element el : message) 
    System.out.println(el.text());

修改

要从网址解析:

更改,

Document document = Jsoup.parse(new File("some.html"),"utf-8");

要,

Document document = Jsoup.connect("http://sabq.org/WzUfde").userAgent("Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.21 (KHTML, like Gecko) Chrome/19.0.1042.0 Safari/535.21").get();

这对我有用,不能在这里发布大量输出,但你可以根据你的情况进行测试。