Во время программирования или при написании сетевого гусенита HTML часто необходимо проанализировать для извлечения полезных данных. Хороший инструмент особенно полезен и может оказать большую помощь.
После его использования: кажется, что htmlcleaner лучше, чем htmlparser, особенно xpath of htmlcleaner.
Давайте сделаем пример HTMLCleaner.
1. Использование htmlcleaner:
1. htmlcleaner
HTMLCleaner - это анализатор документа Java с открытым исходным кодом. HTMLCleaner может реорганизовать каждый элемент документа HTML и генерировать HTML-документы с хорошими структурами (хорошо сформированными). Правила, которые он следует по умолчанию, аналогичны правилам, используемым большинством веб -браузеров в качестве модели документа. Тем не менее, пользователи могут предоставлять пользовательские теги и правила для фильтрации и сопоставления.
Домашний адрес: http://htmlcleaner.sourceforge.net/
Адрес загрузки: //www.vevb.com/softs/364983.html
2. Основной пример, возьмите информацию об аэропорту в Википедии
html-class-decmo.html
Html-clean-demo.html <! : //www.w3.org/1999/xhtml "xml: lang =" zh-cn "dir =" ltr "> <High> <meta http-equiv =" content-seype "content =" text/html; = gbk " /> <meta http-equiv =" content-language "content =" zh-cn " /> <title> html clean demo < /head> <body> <div class =" d_1 "> <ul> li> bar </li> <li> foo </li> <li> gzz </li> </ul> </div> <div> <ul> <li> <a name = "my_href" href = " 1.html "> text- </a> </li> <li> <a name =" my_href "href =" 2.html "> text-2 </a> </a> </a> </ a> </a> </a> </a> </a> </a> </a> </a> </a>/li> <li> <a name = "my_href" href = " 3.html "> text-3 </a> </li> <li> <a name =" my_href "href =" 4.html "> text-4 </a> </li> </ul> < /div> </body> </html>
Htmlcleanerdemo.java
Пакет com.chenlb; tagnode node = clear.clean (new File ("html/html-demo.html"); "gbk"); 0) {System.out.println ("title ="+(tagnode) ns [0]); = node.evaluatexpath ("// div [@class = 'd_1']); для (объект on: ns) {tagnode n = (tagnode) on; system.out.println ("/ttext = "+n.getText ();} System.out.println ("a:"); ("href")+", text ="+n.getText ());}}}
Параметрами в чистоте. Clean () могут быть файлы, URL и строковое содержание. Чаще всего используется, следует оценить, метод getelementsbyattvalue, getelementsbyname. Кроме того, HTMLCleaner лучше совместим с нерегулярным HTML.
Получите информацию о аэропорту в Википедии
Импорт java.io Com.moore.util.httpclientutil;/*** Использование: todo** @author bbdtek*/parserairport {private static logg = logg = logg erfactory.getlogger (parserairport.class);/*** @param args * @Throws unupportedEncingException * @Throws xPatherException */public static void main (string [] args) бросает UnportEdencoDexce ption, xpatherexception {string url = "http://zh.wikipedia.org/wiki/%B8%ead5e5 %8D%8e%E4%Ba%Ba%E6%B0%91%E5%85%B1%E5%8C%E5%BD%E6%BA%BA%E5%BA%E5%88 88%97%E8%E8% A1%a8 "; string contents = httpclientutil.getil (). Getcon (url); htmlcleaner hc = new htmlclener (); xpath =" // div [@class = 'mw-content-ltr'] // таблица [ @ Class = 'Wikitable + Sortable'] // tbody // tr [@align = 'right'] "object [] objarr = null; objarr = tn .evaluatexpath (xpath); if (objarr! = Null && objarr.length> 0) {for (Object obj: objarr) {tagnode tntr = (tagnode) obj; Objarrtr = tntr.evaluatexpath (xptr); info (str);}}}}}
Во -вторых, первое исследование XPath
1. Введение в XPath:
XPath - это язык, который ищет информацию в документах XML. XPath может использоваться для прохождения элементов и атрибутов в документах XML.
2. Выберите узлы XPath
XPath использует выражение пути для выбора узлов в документах XML. Узел выбирается путем или шагом.
Наиболее полезное выражение пути перечислено ниже:
выражение | описывать |
---|---|
NodeName | Выберите все подмотки этого узла. |
/ / | Выберите из корневого узла. |
// | Выберите узлы в текущем выборе узла текущего выбора узла, не учитывая их положение. |
Тогда тогда | Выберите текущий узел. |
... | Выберите родительский узел текущего узла. |
@ @ @ | Выберите атрибуты. |
Некоторые часто используемые выражения
Выражение пути | результат |
---|---|
/книжный магазин/книга [1] | Выберите первую книжную элемент, который принадлежит подразделению книжного магазина. |
/книжный магазин/книга [Last ()]] | Выберите последнюю книжную элемент, принадлежащий подразделению книжного магазина. |
/книжный магазин/книга [Last () -1] | Выберите вторую книжную элемент, принадлежащий подразделению книжного магазина. |
/книжный магазин/книга [Position () <3] | Выберите два элемента книжного магазина книжного магазина, которые принадлежат элементу книжного магазина. |
// заголовок [@lang] | Выберите все элементы заголовка с атрибутами по имени Ланг. |
// заголовок [@lang = 'eng'] | Выберите все элементы заголовка, и эти элементы имеют атрибут LANG с ENG. |
/книжный магазин/книга [цена> 35,00] | Выберите все элементы книги элемента книжного магазина, и стоимость элемента цены должна быть больше 35,00. |
/книжный магазин/книга [цена> 35,00-/название | Выберите все элементы заголовка элемента книги в элементе книжного магазина, и стоимость элемента цены должна превышать 35,00. |