Paquete de agilidad HTML - tablas de análisis

c# html html-agility-pack html-parsing

Pregunta

Quiero usar el paquete de agilidad HTML para analizar tablas de páginas web complejas, pero de alguna manera estoy perdido en el modelo de objetos.

Miré el ejemplo de enlace, pero no encontré ningún dato de tabla de esta manera. ¿Puedo usar XPath para obtener las tablas? Básicamente estoy perdido después de haber cargado los datos sobre cómo obtener las tablas. He hecho esto en Perl antes y fue un poco torpe, pero funcionó. ( HTML::TableParser ).

También estoy contento si uno puede arrojar una luz sobre el orden correcto de los objetos para el análisis.

Respuesta aceptada

¿Qué tal algo como: Usar HTML Agility Pack?

HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(@"<html><body><p><table id=""foo""><tr><th>hello</th></tr><tr><td>world</td></tr></table></body></html>");
foreach (HtmlNode table in doc.DocumentNode.SelectNodes("//table")) {
    Console.WriteLine("Found: " + table.Id);
    foreach (HtmlNode row in table.SelectNodes("tr")) {
        Console.WriteLine("row");
        foreach (HtmlNode cell in row.SelectNodes("th|td")) {
            Console.WriteLine("cell: " + cell.InnerText);
        }
    }
}

Tenga en cuenta que puede hacerlo más bonito con LINQ-to-Objects si desea:

HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(@"<html><body><p><table id=""foo""><tr><th>hello</th></tr><tr><td>world</td></tr></table></body></html>");
foreach (HtmlNode table in doc.DocumentNode.SelectNodes("//table")) {
    Console.WriteLine("Found: " + table.Id);
    foreach (HtmlNode row in table.SelectNodes("tr")) {
        Console.WriteLine("row");
        foreach (HtmlNode cell in row.SelectNodes("th|td")) {
            Console.WriteLine("cell: " + cell.InnerText);
        }
    }
}

Respuesta popular

Lo más simple que he encontrado para obtener el XPath para un elemento en particular es instalar la extensión FireBug para Firefox; vaya al sitio / página web presione F12 para que aparezca Firebug; seleccione con el botón derecho y haga clic con el botón derecho en el elemento en la página que desea consultar y seleccione "Inspeccionar elemento" Firebug seleccionará el elemento en su IDE, luego haga clic con el botón derecho en Elemento en Firebug y elija "Copiar XPath". Esta función le dará la XPath exacta. Consulta que necesitas para obtener el elemento que deseas usando la Biblioteca de Agilidad HTML.




Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué