HTML content extraction

3 отговора 131 прегледа
#1

HTML content extraction

Абе някой да има идея как мога да "извлека" информация от HTML документ, но само съдържанието без таговете - тоест всичко между <..> се игнорира. щтото вече 2 дни се мъча и полудях направо!
пробвах да използвам нещо от сорта:

//otvarq dokumenta za 4etene
BufferedReader bufread = new BufferedReader(new FileReader(urlpath.getFile()));

String s;
do{
s = bufread.readLine();
StringTokenizer tok = new StringTokenizer(s, "<>");
while(tok.hasMoreTokens()){

System.out.print(tok.nextToken()+" ");

}
}while(bufread.read()!=-1); //4ete dokato stigne kraq na dokumenta


знам 4е тва става за 10 мин с Perl ама на мен ми трябва Джава изпълнение.
Благодаря предварително!


ABE NE SE ZNAE, ZNAE LI SE!
Отговор
в отговор на dex_n #2

Re: HTML content extraction

Сещам се за два начина, макар че и двата не съм ги пробвал. Единият е да изпозваш javax.swing.JEditorPane и след това да викнеш getText(). Проблема е, че не знам getText() дали ще ти върне "чистия" текст или всичкия HTML код.

Другият е да използваш XML APIs, да отвориш файла като XML файл и да направиш една разходка по дървото като събираш само TextNode-овете.

Отговор
в отговор на dex_n #3

Re: HTML content extraction

Не мога да кажа със сигурност каква ти е целта. Обаче така както си го написал би трябвало да ти е достатъчно просто да махнеш таговете.
--------------------------
Въртиш в цикъл, докато стигнеш края на htmlString (там си записал сорса на html-to)
String txt = htmlString.substring(0, htmlString.indexOf("<"));
SAVE txt
htmlString = htmlString.substring(htmlString.indexOf(">"));
---------------------------
Ако ти е необходима по-сложна обработка на хтмл-то бих ти препоръчал да
използваш XML API.
За целта първо трябва да обърнеш HTML в XML (има библиотеки за това, напр. JTidy от [линк] ).
След което вече с JAXP или по-добре направо JDOM ([линк]) правиш с данните каквото си искаш.
---------------------------

Отговор
в отговор на Johnny Bravo #4

Re: HTML content extraction

Еее мерси много! Много съм зле... за това със substring-a не се бях сетил...

ABE NE SE ZNAE, ZNAE LI SE!
Отговор