Java: разбор HTML - PullRequest
       1

Java: разбор HTML

0 голосов
/ 06 января 2011

У меня есть содержимое 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 ]

2 голосов
/ 06 января 2011
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...
1 голос
/ 21 января 2011

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

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

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

1 голос
/ 06 января 2011

Я использовал 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]");
1 голос
/ 06 января 2011

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

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

...