Разбор HTML тега div с помощью Jsoup

1

Я попытался получить текст из этих тегов 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 и "дату-время", в котором я пытался:

document.select("div.message");

А также:

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

Но они не сработали.

Теги:
jsoup

1 ответ

1
Лучший ответ

Пробовал против вашего html с 5 случаями, и все они работают нормально, просто небольшая заметка - вы извлекаете коллекцию Elements а не только один Element, используя document.select("div.message");

Код:

 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());

РЕДАКТИРОВАТЬ:

Для анализа из URL:

Изменить,

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();

Это работает для меня, я не могу опубликовать огромный результат здесь, но вы можете проверить его на свой случай.

  • 0
    Я на самом деле разбор с этого URL sabq.org/WzUfde не могли бы вы попробовать получить от него
  • 0
    @ user2989698 Да, я пытался с URL, и он работает, не могу опубликовать результаты, поскольку он огромен, тем не менее отредактировал пост выше с изменением для вас, чтобы проверить его самостоятельно. Просто обратитесь к редактированию выше.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню