Soyez le premier à donner votre avis sur cette source.
Snippet vu 16 054 fois - Téléchargée 17 fois
import org.htmlparser.Parser; import org.htmlparser.util.NodeIterator; import org.htmlparser.util.ParserException; public class TagStripper{ public static void main(String[] args){ final StringBuilder text = new StringBuilder(); try { final Parser parser = new Parser ("http://www.javafr.com"); NodeIterator i = parser.elements(); while (i.hasMoreNodes()) text.append(i.nextNode().toPlainTextString()); System.out.println(text); } catch(ParserException e){ e.printStackTrace(); } } }
j'ai éssayé un code pour parser un fichier html, j'ai réussit de sortir toutes les balises c'est mon codes:
#
import java.io.Serializable;
import java.net.HttpURLConnection;
import java.net.URLConnection;
import org.htmlparser.*;
import org.htmlparser.filters.*;
import org.htmlparser.http.*;
import org.htmlparser.lexer.*;
import org.htmlparser.util.*;
import org.htmlparser.visitors.*;
import org.htmlparser.tags.*;
import org.htmlparser.nodes.*;
public class SimpleParse4 {
public static void main (String [] args) {
Parser parser = null;
NodeFilter filter = null;
try {
parser = new Parser ();
if (1 < args.length)
filter = new TagNameFilter (args[1]);
else
{
filter = null;
// for a simple dump, use more verbose settings
parser.setFeedback (Parser.STDOUT);
Parser.getConnectionManager ().setMonitor (parser);
}
Parser.getConnectionManager ().setRedirectionProcessingEnabled (true);
Parser.getConnectionManager ().setCookieProcessingEnabled (true);
parser.setResource ("http://www.google.com");
NodeList list = parser.parse(filter);
NodeIterator i = list.elements ();
while (i.hasMoreNodes ())
processMyNodes(i.nextNode ());
}
catch (EncodingChangeException ece) {
try {
parser.reset ();
NodeList list = parser.parse(filter);
for (NodeIterator i = list.elements (); i.hasMoreNodes (); )
processMyNodes (i.nextNode ());
}
catch (ParserException e) {
e.printStackTrace ();
}
}
catch (ParserException e) {
e.printStackTrace ();
}
}
static void processMyNodes (Node node) throws ParserException {
if (node instanceof TextNode)
{
TextNode text = (TextNode)node;
System.out.println("text: "" + text.getText() + """);
}
else if (node instanceof RemarkNode)
{
RemarkNode remark = (RemarkNode)node;
}
else if (node instanceof HeadTag)
{
HeadTag tag = (HeadTag)node;
NodeList nl = tag.getChildren ();
if (nl != null)
for (NodeIterator i = nl.elements (); i.hasMoreNodes();) {
Node nextNode = i.nextNode();
if(nextNode instanceof TitleTag) {
System.out.println("Title: " + ((TitleTag)nextNode).getTitle());
break;
}
}
}
else if (node instanceof TagNode)
{
TagNode tag = (TagNode)node;
String tagName = tag.getTagName();
System.out.println("tag name: " + tagName);
System.out.println("tag text: " + tag.getText());
if(tag instanceof LinkTag) {
LinkTag link = (LinkTag)tag;
System.out.println("Link: " + link.getLink());
}
NodeList nl = tag.getChildren ();
if (null != nl)
for (NodeIterator i = nl.elements (); i.hasMoreNodes(); )
processMyNodes (i.nextNode ());
}
}
}
#
mais maintenant je veux afficher chaque balise dans un vecteur
exemple toutes les balises img dans un vecteur
les balises link dans un autre vecteur etc...
j'ai éssayé mais il m'affiche chaque balise image dans un vecteur et moi je veux les regrouper dans un seul vecteur. si quelqu'un peu m'aider et merci d'avance.
String URL = "http://www.javafr.com";
StringExtractor se = new StringExtractor (URL);
String contents = se.extractStrings(true);
System.out.println(contents);
good luck :)
Avec un StringBuilder c'est beaucoup mieux...
L'inconvénient de ta méthode c'est qu'à chaque itération il instancie un nouvel Objet String.
ex:
public static String HtmlToText(final String urlStr)
throws ParserException {
final StringBuilder text = new StringBuilder();
final Parser parser = new Parser(urlStr);
for (final NodeIterator i = parser.elements(); i.hasMoreNodes();)
text.append(i.nextNode().toPlainTextString());
return text.toString();
}
;-)
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.