2010-06-30 13 views

Répondre

4

Idée: Ouvrez l'URL en tant que flux, puis HTML-analyser la chaîne dans sa description meta tag.

Grab contenu URL:

URL url = new URL("http://www.url-to-be-parsed.com/page.html"); 
    BufferedReader in = new BufferedReader(
       new InputStreamReader(
       url.openStream())); 

aura besoin de modifier le code ci-dessus en fonction de ce que votre parser HTML nécessite (un flux, cordes, etc.).

HTML-parse les tags:

<meta name="description" content="This is a place where webmasters can put a description about this web page" /> 

Vous pourriez également être intéressé par saisir le titre de cette page:

<title>This is the title of the page!</title> 

Attention: Les expressions régulières ne semblent pas travailler de manière fiable sur les documents HTML, un HTML-parser est mieux.

Un exemple avec HTML Parser:

  1. Utilisez HasAttributeFilter pour filtrer par tags qui ont name="description" attribut
  2. essayer un Node --->MetaTag casting
  3. Obtenez le content en utilisant MetaTag.getAttribute()

code:

import org.htmlparser.Node; 
import org.htmlparser.Parser; 
import org.htmlparser.util.NodeList; 
import org.htmlparser.util.ParserException; 
import org.htmlparser.filters.HasAttributeFilter; 
import org.htmlparser.tags.MetaTag; 

public class HTMLParserTest { 
    public static void main(String... args) { 
     Parser parser = new Parser(); 
     //<meta name="description" content="Some texte about the site." /> 
     HasAttributeFilter filter = new HasAttributeFilter("name", "description"); 
     try { 
      parser.setResource("http://www.youtube.com"); 
      NodeList list = parser.parse(filter); 
      Node node = list.elementAt(0); 

      if (node instanceof MetaTag) { 
       MetaTag meta = (MetaTag) node; 
       String description = meta.getAttribute("content"); 

       System.out.println(description); 
       // Prints: "YouTube is a place to discover, watch, upload and share videos." 
      } 

     } catch (ParserException e) { 
      e.printStackTrace(); 
     } 
    } 

} 

Considérations:

Si cela se fait dans une JSP chaque fois que la page est chargée, vous pourriez obtenir un ralentissement en raison du réseau d'E/S à l'URL. Pire encore si vous le faites chaque fois à la volée pour une de vos pages qui contient beaucoup de liens URL, le ralentissement pourrait être énorme en raison de l'opération séquentielle de n URL. Peut-être que vous pouvez stocker ces informations dans une base de données et les actualiser au besoin au lieu de le faire à la volée dans les JSP.

+0

:: Merci beaucoup pour votre réponse.Je veux extraire les informations de contenu de la balise meta.J'utilise html parser (http://htmlparser.sourceforge.net/samples.html). pourriez-vous s'il vous plaît m'aider .. – smartcode

+0

Voilà. Ça m'a pris un moment pour faire le tour de leur API. Ça semble fonctionner comme ça. Comme je vais l'utiliser aussi, je vais mettre à jour si je trouve des moyens plus efficaces. – bakkal

+0

:: Quelle belle réponse mon frère! Merci beaucoup ... passez une bonne journée! – smartcode