Maison > interface Web > tutoriel HTML > le corps du texte

Explication détaillée de l'utilisation de HTMLParser (1)

黄舟
Libérer: 2016-12-29 15:49:06
original
2681 Les gens l'ont consulté

Dans la recherche sur le développement des moteurs de recherche, le traitement des pages Web HTML est un maillon central. Il existe de nombreux codes open source sur Internet. Pour Java, HTMLParser est un code bien connu et largement utilisé. La page d'accueil de HTMLParser est http://htmlparser.sourceforge.net/, et la dernière mise à jour était la version 1.6 en septembre 2006. Mais cela n'a pas d'importance, le contenu du HTML n'a pas changé de manière significative depuis longtemps et HTMLParser n'a fondamentalement aucun problème à le traiter. HTMLParser présente l'avantage d'être compact et rapide. L'inconvénient est qu'il existe relativement peu de documents pertinents (et peu en anglais) et que de nombreuses fonctions doivent être explorées par vous-même. Pour les débutants, cela demande encore un certain effort, mais une fois que vous aurez commencé, vous constaterez que la conception structurelle de HTMLParser est très intelligente et très pratique, et qu'elle peut essentiellement répondre à vos différents besoins.
Ici, j'ai écrit quelques éléments d'introduction basés sur mon expérience des derniers mois. J'espère que cela sera utile aux amis qui découvrent HTMLParser. (Cependant, mon score en chinois à l'examen d'entrée à l'université n'était qu'un point supérieur à la réussite, j'espère donc que tout le monde me supportera sur les questions grammaticales)

Le module de base de HTMLParser est le org.htmlparser.Parser classe Cette classe termine en fait le traitement des pages HTML. Cette classe a les constructeurs suivants :

public Parser ();
public Parser (Lexer lexer, ParserFeedback fb);
public Parser (URLConnection connection, ParserFeedback fb) throws ParserException;
public Parser (String resource, ParserFeedback feedback) throws ParserException;
public Parser (String resource) throws ParserException;
public Parser (Lexer lexer);
public Parser (URLConnection connection) throws ParserException;
和一个静态类 public static Parser createParser (String html, String charset);
Copier après la connexion

Pour la plupart des utilisateurs, la méthode la plus couramment utilisée consiste à initialiser Parser via une URLConnection ou une chaîne contenant le contenu d'une page Web, ou à utiliser des fonctions statiques pour générer un objet Analyseur. Le code de ParserFeedback est très simple et est conçu pour le débogage et le suivi des processus d'analyse, et n'a généralement pas besoin d'être modifié. L'utilisation de Lexer est un sujet relativement avancé et sera abordé plus tard.
Le point le plus intéressant ici est que si vous devez définir la méthode d'encodage de la page, le seul moyen est d'utiliser des fonctions statiques sans utiliser Lexer. Pour la plupart des pages chinoises, il semble que ce soit une méthode qui devrait être utilisée plus souvent.

Ce qui suit est un exemple d'initialisation de Parser.

/**
* @author www.baizeju.com
*/
package com.baizeju.htmlparsertester;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.FileInputStream;
import java.io.File;
import java.net.HttpURLConnection;
import java.net.URL;
import org.htmlparser.visitors.TextExtractingVisitor;
import org.htmlparser.Parser;
/**
* @author www.baizeju.com
*/
public class Main {
private static String ENCODE = "GBK";
private static void message( String szMsg ) {
try{ System.out.println(new String(szMsg.getBytes(ENCODE), System.getProperty("file.encoding"))); } catch(Exception e ){}
}
public static String openFile( String szFileName ) {
try {
BufferedReader bis = new BufferedReader(new InputStreamReader(new FileInputStream( new File(szFileName)), ENCODE) );
String szContent="";
String szTemp;
while ( (szTemp = bis.readLine()) != null) {
szContent+=szTemp+"/n";
}
bis.close();
return szContent;
}
catch( Exception e ) {
return "";
}
}
public static void main(String[] args) {
String szContent = openFile( "E:/My Sites/HTMLParserTester.html");
try{
//Parser parser = Parser.createParser(szContent, ENCODE);
//Parser parser = new Parser( szContent );
Parser parser = new Parser( (HttpURLConnection) (new URL("http://127.0.0.1:8080/HTMLParserTester.html")).openConnection() );
TextExtractingVisitor visitor = new TextExtractingVisitor();
parser.visitAllNodesWith(visitor);
String textInPage = visitor.getExtractedText();
message(textInPage);
}
catch( Exception e ) { 
}
}
}
Copier après la connexion

La partie soulignée teste plusieurs méthodes d'initialisation différentes, et les résultats sont présentés ci-dessous. Tant que vous pouvez voir que Parser peut générer du contenu, nous discuterons plus tard de la manière d'accéder au contenu de Parser.

Ce qui précède est l'explication détaillée de l'utilisation de HTMLParser (1). Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois (www.php.cn) !


Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal