Question

Je vais avoir un petit problème en Java. Comment faire. Je veux rechercher dans un fichier HTML pour les balises href et src, et je veux obtenir l'URL associée à cette balises

Quelle est la meilleure façon de le faire?

Merci pour l'aide. Meilleures salutations.

Était-ce utile?

La solution

Ceci est le code que je l'habitude d'accomplir exactement ce que vous voulez faire, mais d'abord laissez-moi vous donner quelques conseils.

Si vous êtes dans un environnement Java Swing, assurez-vous d'utiliser les méthodes dans les packages javax.swing.text.html et javax.swing.text.html.parser. Malheureusement, ils sont pour la plupart destinés à être utilisés sur un JEditorPane, mais je serais encore vous recommandons fortement de jeter un oeil à ces derniers.

Il y a une classe dans l'API Java 6 appelé HTML.Tag qui identifie le code HTML balises de début et de fin, que vous pouvez ensuite utiliser afin de déterminer où les liens sont que vous souhaitez que votre programme à suivre. http://java.sun.com/javase/6/docs/api/javax/swing/text/html/HTML.Tag.html

Quand j'ai écrit un programme très similaire à cela, je 3 méthodes principales:

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)

Si vous avez besoin de plus d'aide sur la façon d'écrire ces méthodes, vous pouvez me message, mais au fond, vous êtes à la recherche d'une étiquette initiale et une balise de fin, puis de que vous avez identifié l'URL et vous pouvez passer à l'étape suivante, qui est la suite de l'URL.

Pour suivre l'url, je vous conseille d'utiliser l'objet JEditorPane. L'interface javax.swing.event.HyperlinkListener définit une seule méthode, hyperlinkUpdate (HyperlinkEvent e), que vous pouvez transmettre l'URL dans et puis appelez .setPage (evt.getURL ()) sur votre objet JEditorPane. Cela mettra alors à jour le volet avec la nouvelle page et vous permettre de recommencer le processus.

moi Msg si vous avez des probs et s'il vous plaît voter cette réponse!

Autres conseils

Est-ce que vous voulez faire cela comme une tâche d'édition unique, ou avez-vous besoin d'une mise en œuvre systématique (code à savoir)? Dans le second cas, trouver une implémentation Java analyseur HTML et parcourir l'arborescence DOM.

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

Vous pouvez utiliser Rhino , puis charger la fichier html. Une fois que vous obtient chargé peut être utilisé getElementBy pour aller à un nœud ou d'obtenir la valeur.

Si votre fichier est un document xhtml , il est un document XML standard et la façon dont libériennes pour l'analyser utilise jdom . JDom est très puissant et facile à utiliser et à comprendre.

Si vous avez un document HTML, vous pouvez HTMLParser , dans particoular la classe LinkTag .

Je consulter tagsoup , qui construira un DOM arbre de tout document HTML, même les plus non conformes.

Ensuite, utilisez XPath et itérer sur le NodeList retourné par:

// a

et

// img

Je l'ai utilisé Neko HTML Parser avec succès pour ce genre de chose (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 
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top