Frage

Ich habe ein kleines Problem in Java. Wie dies zu tun. Ich in einer HTML-Datei für die Tags href und src, suchen möge, und dann will ich die URL mit diesen Tags verbunden bekommen

Was ist der beste Weg, es zu tun?

Danke für die Hilfe. Mit freundlichen Grüßen.

War es hilfreich?

Lösung

Dies ist der Code, den ich verwendet, genau zu erreichen, was Sie tun möchten, aber zuerst möchte ich Ihnen ein paar Tipps geben.

Wenn Sie in einer Java-Swing-Umgebung sind, stellen Sie sicher, dass die Methoden in den javax.swing.text.html und javax.swing.text.html.parser von Paketen zu benutzen. Leider sind sie vor allem für den Einsatz auf einem JEditorPane, aber ich würde immer noch empfehlen, dass Sie auf diesem einen Blick darauf werfen.

Es gibt eine Klasse in der Java 6 API HTML.Tag genannt, die die HTML-Tags beginnen und enden identifiziert, die Sie dann verwenden können, um zu bestimmen, wo die Verbindungen sind, dass Sie Ihr Programm mögen folgen. http://java.sun.com/javase/6/docs/api/javax/swing/text/html/HTML.Tag.html

Wenn ich ein Programm sehr ähnlich wie diese schrieb, habe ich drei wichtigsten Methoden:

public void handleStartTag(HTML.Tag t, MUtableAttributeSet atts, int pos)
public void handleEndTag(HTML.Tag t, int pos)
public void handleText(char[] text, int pos)

Wenn Sie brauchen mehr Hilfe, wie diese Methoden zu schreiben, können Sie Mitteilung mich können, aber im Grunde, Sie suchen nach einem ersten Tag und einem End-Tag und dann aus, dass Sie die URL identifiziert werden und dann können Sie fortfahren zu der nächste Schritt, der die uRL folgt.

der URL zu folgen, rate ich Ihnen das JEditorPane Objekt zu verwenden. Die javax.swing.event.HyperlinkListener Schnittstelle definiert nur eine Methode, hyperlinkUpdate (HyperlinkEvent e), mit dem Sie die URL in und rufen Sie dann .setPage (evt.getURL ()) auf Ihrem JEditorPane Objekt passieren kann. Dies wird dann den Bildschirm mit der neuen Seite aktualisieren und können Sie den Prozess erneut starten.

Msg mich, wenn Sie irgendwelche probs haben und bitte diese Antwort abstimmen!

Andere Tipps

Haben Sie dies als eine einmalige Bearbeitungsaufgabe tun wollen, oder benötigen Sie eine systematische (das heißt Code) Umsetzung? Im zweiten Fall, eine Java-HTML-Parser Implementierung finden und den DOM-Baum gehen.

http://java-source.net/open-source/html-parsers

Werfen Sie einen Blick auf diese Frage:

Die Antwort, die ich verwendet wurde, jtidy

Sie können mit Rhino , dann laden die html-Datei. Sobald es geladen wird, können Sie verwenden getElementBy zu einem beliebigen Knoten zu gehen oder Wert zu erhalten.

Wenn die Datei ein ist XHTML-Dokument , ist es ein Standard-XML-Dokument und der Bast Weg, es zu analysieren, wird mit jdom . JDom ist sehr leistungsfähig und einfach zu bedienen und zu verstehen.

Wenn Sie ein HTML-Dokument haben, können Sie versuchen, HTMLParser , in particoular die Klasse LinkTag .

Ich würde einen Blick auf tagsoup , die einen DOM bauen Baum von einem beliebigen HTML-Dokument, auch die nicht-konforme diejenigen.

Dann XPath verwenden und iterieren die NodeList zurück von:

// a

und

// img

Ich habe die Neko HTML-Parser erfolgreich für diese Art der Sache (Screen Scraping) verwendet.

import org.cyberneko.html.parsers.DOMParser;
import org.w3c.dom.Node;

public class TestParser {

     public static void main(String[] argv) throws Exception {
          DOMParser parser = new DOMParser();
          for (int i = 0; i 
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top