Java: разбор HTML

У меня есть содержимое HTML, как указано ниже. Тег, который я ищу здесь "img src" а также "!important", Предоставляет ли Java какие-либо методы разбора HTML?

<fieldset>
<table cellpadding='0'border='0'cellspacing='0'style="clear :both">
<tr valign='top' ><td width='35' >
<a href='http://mypage.rediff.com/android/32868898'class='space' onmousedown="return
 enc(this,'http://track.rediff.com/clickurl=___http%3A%2F%2Fmypage.rediff.com%2Fandroid%2F3 868898___&service=mypage_feeds&clientip=202.137.232.117&pos=0&feed_id=12942949154d255f839677925642&prc_id=32868898&rowid=2064549114')" >
<div style='width:25px;height:25px;overflow:hidden;'>
<img src='http://socialimg04.rediff.com/image.php?uid=32868898&type=thumb'  width='25'  vspace='0'  /></div></a></td> <td><span>
<a href='http://mypage.rediff.com/android/32868898'  class="space" onmousedown="return enc(this,'http://track.rediff.com/click?url=___http%3A%2F%2Fmypage.rediff.com%2Fandroid%2F32868898___&service=mypage_feeds&clientip=202.137.232.117&pos=0&feed_id=12942949154d255f839677925642&prc_id=32868898&rowid=2064549114')" >Android </a> </span><span style='color:#000000
!important;'>android se updates...</span><div class='divtext'></div></td></tr><tr><td height='5' ></td></tr></table></fieldset><br/>

4 ответа

Решение
String value = Jsoup.parse(new File("d:\\1.html"), "UTF-8").select("img").attr("src");
System.out.println(value); //http://socialimg04.rediff.com/image.php?uid=32868898&type=thumb
System.out.println(Jsoup.parse(new File("d:\\1.html"), "UTF-8").select("span[style$=important;]").first().text());//android se updates...

Мне нравится использовать Иерихон: http://jericho.htmlparser.net/docs/index.html

Он неуязвим для плохо сформированного html, ссылок, ведущих к недоступным местам и т. Д.

На их странице много примеров, вы просто получаете все теги IMG и анализируете их атрибуты, чтобы извлечь те, которые соответствуют вашим потребностям.

Я использовал jsoup - у этой библиотеки хороший синтаксис селектора (http://jsoup.org/cookbook/extracting-data/selector-syntax), и для вашей проблемы вы можете использовать такой код:

File input = new File("input.html");
Document doc = Jsoup.parse(input, "UTF-8", "http://example.com/");

Elements pngs = doc.select("img[src$=.png]");

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

NekoHTML - это простой сканер HTML и балансировщик тегов, который позволяет разработчикам приложений анализировать документы HTML и получать доступ к информации через стандартные интерфейсы XML. Парсер может сканировать HTML-файлы и "исправлять" многие распространенные ошибки, которые совершают авторы (и компьютеры) при написании HTML-документов. NekoHTML добавляет отсутствующие родительские элементы; автоматически закрывает элементы с необязательными конечными тегами; и может обрабатывать несоответствующие встроенные теги элементов.

Другие вопросы по тегам