Heim > Web-Frontend > HTML-Tutorial > Detaillierte Erläuterung der Verwendung von HTMLParser (1)

Detaillierte Erläuterung der Verwendung von HTMLParser (1)

黄舟
Freigeben: 2016-12-29 15:49:06
Original
2707 Leute haben es durchsucht

Bei der Erforschung der Entwicklung von Suchmaschinen ist die Verarbeitung von HTML-Webseiten ein zentraler Link. Es gibt viele Open-Source-Codes im Internet. HTMLParser ist ein bekannter und weit verbreiteter Code. Die Homepage von HTMLParser ist http://htmlparser.sourceforge.net/ und das letzte Update war Version 1.6 im September 2006. Aber das macht nichts, der Inhalt von HTML hat sich seit langem nicht wesentlich verändert und HTMLParser hat im Grunde kein Problem damit, ihn zu verarbeiten. HTMLParser hat den Vorteil, kompakt und schnell zu sein. Der Nachteil besteht darin, dass es relativ wenige relevante Dokumente (und nur wenige auf Englisch) gibt und viele Funktionen selbst erkundet werden müssen. Für Anfänger ist es immer noch etwas mühsam, aber wenn Sie einmal angefangen haben, werden Sie feststellen, dass das strukturelle Design von HTMLParser sehr clever und sehr praktisch ist und grundsätzlich Ihre verschiedenen Anforderungen erfüllen kann.
Hier habe ich einige Einführungen geschrieben, die auf meinen Erfahrungen in den letzten Monaten basieren. Ich hoffe, dass sie für Freunde hilfreich sein werden, die neu bei HTMLParser sind. (Mein Chinesisch-Ergebnis bei der College-Aufnahmeprüfung war jedoch nur einen Punkt höher als das Bestehen, daher hoffe ich, dass mir bei den grammatikalischen Fragen jeder folgen wird.)

Das Kernmodul von HTMLParser ist der org.htmlparser.Parser Diese Klasse schließt tatsächlich die Verarbeitung von HTML-Seiten ab. Diese Klasse verfügt über die folgenden Konstruktoren:

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);
Nach dem Login kopieren

Für die meisten Benutzer besteht die am häufigsten verwendete Methode darin, den Parser über eine URLConnection oder eine Zeichenfolge zu initialisieren, die den Webseiteninhalt enthält, oder statische Funktionen zum Generieren zu verwenden ein Parser-Objekt. Der Code von ParserFeedback ist sehr einfach und für das Debuggen und Verfolgen von Analyseprozessen konzipiert und muss im Allgemeinen nicht geändert werden. Die Verwendung von Lexer ist ein relativ fortgeschrittenes Thema und wird später besprochen.
Der interessantere Punkt hier ist, dass, wenn Sie die Kodierungsmethode der Seite festlegen müssen, die einzige Möglichkeit darin besteht, statische Funktionen zu verwenden, ohne Lexer zu verwenden. Für die meisten chinesischen Seiten scheint dies eine Methode zu sein, die häufiger verwendet werden sollte.

Das Folgende ist ein Beispiel für die Initialisierung von 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 ) { 
}
}
}
Nach dem Login kopieren

Der hervorgehobene Teil testet mehrere verschiedene Initialisierungsmethoden. Die Ergebnisse werden unten angezeigt. Solange Sie sehen können, dass Parser Inhalte ausgeben kann, werden wir später besprechen, wie Sie auf Parser-Inhalte zugreifen.

Das Obige ist die detaillierte Erklärung der Verwendung von HTMLParser (1). Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn).


Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage