Während des Programmierens oder beim Schreiben eines Netzwerkcrawlers muss HTML häufig analysiert werden, um nützliche Daten zu extrahieren. Ein gutes Werkzeug ist besonders nützlich und kann viel Hilfe liefern.
Nach dem Gebrauch: Es ist der Ansicht, dass HTMLCleaner besser ist als HTMLParser, insbesondere der XPath von HTMLCleaner.
Lassen Sie uns ein Beispiel für HTMLCleaner erstellen.
1. HTMLCleaner -Verwendung:
1. HtmlCleaner
HTMLCleaner ist eine Open -Source -Java -Sprache HTML -Dokument -Parser. HTMLCleaner kann jedes Element des HTML-Dokuments neu organisieren und HTML-Dokumente mit guten Strukturen (gut geformt) generieren. Die standardmäßigen Regeln ähneln den Regeln, die von den meisten Webbrowsern als Modell des Dokuments verwendet werden. Benutzer können jedoch benutzerdefinierte Tags und Regeln für die Filterung und Übereinstimmung bereitstellen.
Home -Adresse: http://htmlcleaner.sourceforge.net/
Laden Sie die Adresse: //www.vevb.com/softs/364983.html herunter
2. Basic -Beispiel: Ergreifen Sie die Flughafeninformationen in Wikipedia
HTML-Klasse-Decmo.html
Html-clean-demo.html <! : //www.w3.org/1999/xhtml "xml: Lang =" zh-cn "Dir =" ltr "> <High> <meta http-equiv =" content-septy "content =" text/html; = gbk " /> <meta http-äquiv =" content-sprachige "content =" zh-cn " /> <title> html Clean Demo < /head> <body> <div class =" d_1 "> <ul> <ul> <ul> <ul> <ul> <ul> <ul> <ul> <ul> <ul> <ul> <ul> <ul> <ul> <ul> <ul> <ul> < li> bar </li> <li> foo </li> <li> gzz </li> </ul> </div> <div> <ul> <li> <a name = "my_href" href = " 1.html "> text- </a> </li> <li> <a name =" my_href "href =" 2.html "> text-2 </a> </a> </a> </ a> </a> </a> </a> </a> </a> </a> </a> </a>/li> <li> <a name = "my_href" href = " 3.html "> text-3 </a> </li> <li> <a name =" my_href "href =" 4.html "> text-4 </a> </li> </ul> < /div> </body> </html>
HtmlCleanerDemo.java
Paket com.chenlb; Tagnode node = clear.clean (neue Datei ("HTML/HTML-DEMO.HTML"); "GBK"); 0) {System.out.println ("title ="+(Tagnode) ns [0]); = node.evaluatexpath ("// div [@class = 'd_1']); für (Objekt auf: ns) {Tagnode n = (Tagnode) auf; system.out.println ("/ttext = "+n.getText ())} System.out.println ("a:"); ("href")+", text ="+n.getText ());}}}
Die Parameter in Cleaner.clean () können Dateien, URL- und String -Inhalte sein. Die häufiger verwendeten sollten evaluatexpath, getElements byattValue, GetElementsByName -Methode sein. Darüber hinaus ist HTMLCleaner besser mit unregelmäßigem HTML kompatibel.
Nehmen Sie die Flughafeninformationen in Wikipedia
Java.io.unsupportedEdeNectexception; Com.moore.util.httpclientUtil;/*** verwendet: todo** @author Bbdtek*/public class Parserairport {private statische Logger logg = logg = logg erfactory.getLogger (parserArport.class);/*** @param args args. * @throws UnupportEDencingException * @throws xpatheRexception */public static void main (String [] args) löst UnportedEnexce ption, xpatheRexception {String url = "http://zh.wikipedia.org/wiki/%e4%B8%AD%AD%E5E5S5 aus %8d%8e%e4%ba%%e6%b0%91%e5%85%b1%e5%8c%e5%bd%e6 ba%E5%ba%e5%88%97%E8% A1%A8 "; String Contents = httpclientUtil.getil (). Getcon (url); Class = 'wikitable + sortable'] // tbody // tr [@align = 'rechts'] "Objekt [] objarr = null; objarr = tn .evaluatexpath (xpath); if (objarr! = Null && objarr.length> 0) {für (Object OBJ: Objarr) {Tagnode tntr = (Tagnode) obj; Objarrtr = tntr.Valuatexpath (xptr); info (str);}}}}}
Zweitens die erste Erkundung von XPath
1. Einführung in XPath:
XPath ist eine Sprache, die nach Informationen in XML -Dokumenten sucht. XPath kann verwendet werden, um Elemente und Attribute in XML -Dokumenten zu durchqueren.
2. Wählen Sie XPath -Knoten aus
XPath verwendet den Pfadausdruck, um Knoten in XML -Dokumenten auszuwählen. Der Knoten wird vom Pfad oder Schritt ausgewählt.
Der nützlichste Pfadausdruck ist unten aufgeführt:
Ausdruck | beschreiben |
---|---|
Knotenname | Wählen Sie alle Sub -Nodes dieses Knotens aus. |
/ / / / | Wählen Sie aus dem Stammknoten. |
// | Wählen Sie die Knoten in der aktuellen Knotenauswahl der aktuellen Knotenauswahl, ohne ihre Position zu berücksichtigen. |
Dann dann | Wählen Sie den aktuellen Knoten aus. |
... | Wählen Sie den übergeordneten Knoten des aktuellen Knotens aus. |
@ @ | Wählen Sie Attribute aus. |
Einige häufig verwendete Ausdrücke
Pfadausdruck | Ergebnis |
---|---|
/Buchhandlung/Buch [1] | Wählen Sie das erste Buchelement aus, das zur Buchhandlung gehört. |
/bookstore/book [last ()]]] | Wählen Sie das letzte Buchelement für die Buchhandlung Sub -Element aus. |
/bookstore/book [last () -1] | Wählen Sie das zweite Buchelement zum Buchhandel Sub -Element. |
/bookstore/book [Position () <3] | Wählen Sie die beiden Buchelemente des Buchhandels, die zum Buchhandelselement gehören, aus. |
// Titel [@lang] | Wählen Sie alle Titelelemente mit Attributen mit dem Namen Lang. |
// title [@lang = 'eng'] | Wählen Sie alle Titelelemente aus, und diese Elemente haben das Lang -Attribut mit Eng. |
/Buchhandlung/Buch [Preis> 35,00] | Wählen Sie alle Buchelemente des Buchhandelselements aus, und der Wert des Preiselements muss größer als 35,00 sein. |
/Buchhandlung/Buch [Preis> 35.00-/Titel | Wählen Sie alle Titelelemente des Buchelements im Buchhandelselement aus, und der Wert des Preiselements muss größer als 35,00 sein. |