2009-12-10 8 views
10

Estoy tratando de usar HTML agilidad paquete para obtener el texto de la descripción del interior de la:HTML agilidad Paquete

<meta name="description" content="**this is the text i want to extract and store in a string**" /> 

Y alguien en Stackoverflow hace un rato me sugirió que usara HTMLAgilityPack. Pero no sé cómo usarlo, y la documentación que encontré (incluidos los documentos incluidos en las descargas) tiene enlaces no válidos y, por lo tanto, no puede ver la documentación.

¿Alguien puede ayudarme a resolver esto?

+1

Estoy confundido - ¿ha construido HtmlAgilityPack o no? ¿Son los ejemplos que no se construyen? o el núcleo dll? Si es este último, ¿a qué se ha referido? –

+0

gracias Marc. He editado mi pregunta y eliminado esa parte para evitar confusiones. Pensando en ello ahora, esa parte específica no era en realidad relativa a mi pregunta, más bien un poco de información para decir por qué estoy haciendo la pregunta. –

+0

He podido agregar una referencia en mi aplicación al archivo dll. entonces puedo "usar" el paquete htmlagility. –

Respuesta

16

El uso es muy similar a XmlDocument; puede usar MSDN en XmlDocument para obtener una visión general amplia; es posible que también desee aprender la sintaxis xpath (MSDN).

Ejemplo:

HtmlDocument doc = new HtmlDocument(); 
doc.Load(path); // or .LoadHtml(html); 
HtmlNode node = doc.DocumentNode.SelectSingleNode("//meta[@name='description']"); 
if (node != null) { 
    string desc = node.GetAttributeValue("content", ""); 
    // TODO: write desc somewhere 
} 

El segundo argumento de GetAttributeValue es el valor predeterminado devuelto en caso de que el atributo no se encuentra.

+0

¿Cuál es el segundo argumento de cadena (el vacío) utilizado en 'node.GetAttributeValue (" content "," ");'? – Alex

+0

@AlexW - No tengo esa biblioteca "a mano" en este momento; ¿cómo se llama el parámetro? –

+0

No estoy seguro del nombre del parámetro ... Seguirá la ruta de definición más adelante para averiguarlo. Gracias por responder aquí, v útil. – Alex

0

cadena pública HtmlAgi (String url, clave de cadena) {

var Webget = new HtmlWeb(); 
    var doc = Webget.Load(url); 
    HtmlNode ourNode = doc.DocumentNode.SelectSingleNode(string.Format("//meta[@name='{0}']", key)); 

    if (ourNode != null) 
    { 


      return ourNode.GetAttributeValue("content", ""); 

    } 
    else 
    { 
     return "not fount"; 
    } 

} 
Cuestiones relacionadas