Все обескураживаются при столкновении с сложными и громоздкими HTML -страницами. Потому что трудно получить соответствующие данные.
Самый старый способ - попытаться использовать регулярные выражения.
Второй метод состоит в том, чтобы использовать пакет HTMLPARSER с открытым исходным кодом.
У меня есть исходный код HTMLParser, который может получить все гиперссылки
Кода -копия выглядит следующим образом:
/*
* Чтобы изменить этот шаблон, выберите инструменты |
* и откройте шаблон в редакторе.
*/
Пакет -тест;
импортировать java.util.hashmap;
импортировать java.util.map;
Импорт org.htmlparser.node;
Импорт org.htmlparser.nodefilter;
Импорт org.htmlparser.parser;
Импорт org.htmlparser.tags.linktag;
Импорт org.htmlparser.util.nodelist;
открытый класс getLinkTest {
public static void main (string [] args) {
пытаться {
// отфильтровать тег <a> через фильтр
Parser parser = new parser ("// www.vevb.com");
Nodelist nodelist = parser.extractallnodesthatmatch (new nodefilter () {
// реализовать этот метод для фильтрации тегов
Public Boolean Accept (Node Node) {
if (node ancementof linktag) // тег
{
вернуть истину;
}
вернуть ложь;
}
});
// Печать
for (int i = 0; i <nodelist.size (); i ++) {
Linktag n = (linktag) nodelist.elementat (i);
//System.out.print (n.getStringText () + "== >>");
//System.out.println (n.extractlink ());
пытаться {
if (n.extractlink (). equals ("// www.vevb.com")) {
System.out.println (N.ExtractLink ());
}
} catch (Exception e) {
}
}
} catch (Exception e) {
e.printstacktrace ();
}
}
}
Третий метод - это также метод, который я использовал сейчас.
Кода -копия выглядит следующим образом:
/*
* Чтобы изменить этот шаблон, выберите инструменты |
* и откройте шаблон в редакторе.
*/
Package Exec;
Импорт java.io.file;
импортировать java.io.ioexception;
Import org.htmlCleaner.cleanerProperties;
Импорт org.htmlcleaner.htmlcleaner;
Import org.htmlcleaner.prettyxmlserializer;
Импорт org.htmlcleaner.tagnode;
/**
*
*/
открытый класс htmlclean {
public void cleanhtml (string htmlurl, string xmlurl) {
пытаться {
long start = System.currentTimeMillis ();
Htmlcleaner cleaner = new htmlcleaner ();
CleanerProperties props = cleaner.getProperties ();
props.setUsecdataforscplactandstyle (true);
props.setRecognizeUnicodechars (true);
props.setusemptyelementtags (true);
props.setAdvancedXmlescape (true);
props.setTranslatesPecialentities (True);
props.setbooleAnattributeValues («пусто»);
Tagnode node = cleaner.clean (новый файл (htmlurl));
System.out.println ("vreme:" + (System.currentTimeMillis () - Start));
new PrittyxmlSerializer (реквизит) .WriteXmltoFile (Node, Xmlurl);
System.out.println ("vreme:" + (System.currentTimeMillis () - Start));
} catch (ioException e) {
e.printstacktrace ();
}
}
}