Domanda

sto avendo un piccolo problema in Java. Come fare questo:. Voglio cercare in un file HTML per il tag href e src, e poi voglio ottenere l'URL associato a quel tag

Qual è il modo migliore per farlo?

Grazie per l'aiuto. Cordiali saluti.

È stato utile?

Soluzione

Questo è il codice che ho usato per realizzare esattamente quello che ci piace fare, ma prima mi permetta di darle un paio di consigli.

Se siete in un ambiente Java Swing, assicurarsi di utilizzare i metodi nei pacchetti javax.swing.text.html e javax.swing.text.html.parser. Purtroppo, sono per lo più destinati ad essere utilizzati su un JEditorPane, ma mi piacerebbe ancora vivamente vivamente di dare un'occhiata a questi.

C'è una classe in Java 6 API chiamata HTML.Tag che identifica avviare l'HTML e tag di chiusura, che è quindi possibile utilizzare al fine di determinare dove i collegamenti sono che desideri che il tuo programma da seguire. http://java.sun.com/javase/6/docs/api/javax/swing/text/html/HTML.Tag.html

Quando ho scritto un programma molto simile a questo, ho usato 3 metodi principali:

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)

Se avete bisogno di più aiuto su come scrivere questi metodi, si può chattare con me, ma in fondo, siete alla ricerca di un tag iniziale e un tag di chiusura e poi da che avrete identificato l'url e quindi si può procedere alla il passo successivo, che sta seguendo l'url.

Per seguire l'url, vi consiglio di utilizzare l'oggetto JEditorPane. L'interfaccia javax.swing.event.HyperlinkListener definisce un solo metodo, hyperlinkUpdate (HyperlinkEvent e), che è possibile passare l'URL in e quindi chiamare .setPage (evt.getURL ()) sul vostro oggetto JEditorPane. Questo sarà quindi aggiornare il riquadro con la nuova pagina e consentono di avviare nuovamente il processo.

Msg me se avete eccessiva e si prega di votare questa risposta!

Altri suggerimenti

Vuoi fare questo come un compito di modifica di una volta, o avete bisogno di una sistematica (vale a dire il codice) l'attuazione? Nel secondo caso, trovare un'implementazione Java parser HTML e camminare l'albero DOM.

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

È possibile utilizzare Rhino , quindi caricare il file html. Una volta che viene caricato è possibile utilizzare getElementBy per andare a qualsiasi nodo o per ottenere il valore.

Se il file è un documento XHTML , è un documento XML standard e il modo in rafia per analizzare sta usando JDOM . JDOM è molto potente e facile da usare e da capire.

Se si dispone di un documento HTML si può provare HTMLParser , nel particoular la classe linkTag .

Vorrei dare un'occhiata a tagsoup , che compila un DOM albero da qualsiasi documento HTML, anche i più non conformi.

Quindi utilizzare XPath e iterare il NodeList restituito da:

// a

e

// img

Ho usato il Neko parser HTML con successo per questo genere di cose (screen scraping).

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 
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top