2010-01-04 3 views
9

Tengo una página web cargada en el navegador (es decir, su DOM y el posicionamiento de elementos son accesibles para mí) y quiero encontrar el elemento de bloque (o una ordenada) lista de estos elementos), que probablemente contiene la mayor cantidad de contenido (como en un bloque continuo de texto). El objetivo es excluir cosas como menús, encabezados, pies de página y demás.Qué algoritmos podría usar para identificar contenido en una página web

Respuesta

1

Primero, si necesita analizar una página web, usaría HTMLAgilityPack para transformarla a XML. Agilizará todo y te permitirá usar una XPath simple para ir directamente al CUERPO.

Después de eso, debe ejecutar todos los divs (puede obtener todos los elementos DIV en una lista del paquete de agilidad) y obtener lo que desee.

+0

Me interesan más los tipos de criterios que podría utilizar para juzgar los distintos nodos candidatos. – VoY

1

Hay una técnica simple de hacer esto, con base en el análisis de la forma en HTML "ruidoso" es, es decir, ¿cuál es la proporción de marcadores para texto que se muestra a través de una página HTML. The Easy Way to Extract Useful Text from Arbitrary HTML describe este tex, dando un poco de código python para ilustrar.

Cf. también el módulo Perl HTML::ContentExtractor, que implementa esta idea. Tendría sentido limpiar primero el html, si quieres usarlo, usando beautifulsoup.

1

Recomendaría la tesis de Vit Baisa en Web Content Cleaning, creo que tiene algún código también, pero no puedo encontrar un enlace para ello. También hay un discussion del mismo problema en el blog LingPipe de procesamiento de lenguaje natural.

Cuestiones relacionadas