2011-01-06 2 views
0

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

<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/> 
+0

java или javascript? – ant

+0

@ c0mrade Он сказал Java в названии, вопросе и тегах. – marcog

+0

Люди @marcog часто смешивают эти два, поэтому я просто дважды проверяю, нет ли вреда в этом – ant

ответ

2
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... 
+0

, и для важной части проясните вопрос –

+0

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

+0

Я не вижу никакого «важного» тега в html, который вы дали –

1

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

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

1

Я 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]"); 
+0

для 'important' используйте следующий код: doc.getElementsByAttributeValueMatching (String key, String regex). В вашем случае ключевым является «стиль» (span style = «...! Important») и регулярное выражение «(! Important)» – Igor

1

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

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

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