2009-07-18 16 views
22

Estoy tratando de crear un analizador de HTML generalizado que funcione bien en publicaciones de blog. Quiero señalar mi analizador en la URL específica de la entrie y recuperar el texto limpio de la publicación. Mi enfoque básico (de Python) ha sido utilizar una combinación de BeautifulSoup/Urllib2, lo cual está bien, pero se supone que usted conoce las etiquetas adecuadas para la entrada del blog. Alguien tiene mejores ideas?Crear un gran analizador - Extraer texto relevante de HTML/Blogs

Aquí hay algunos pensamientos que tal vez alguien podría ampliar, que aún no tengo suficientes conocimientos/know-how para implementar.

  1. El programa Unix 'lince' Parece que analizar las entradas del blog especialmente bien - lo analizador usan ellos, o cómo podría esto ser utilizada?

  2. ¿Hay servicios/analizadores que eliminan automáticamente los anuncios basura, etc.?

  3. En este caso, tenía una vaga noción de que puede ser una buena suposición que las publicaciones de blog usualmente están contenidas en cierta etiqueta definitoria con class = "entry" o algo similar. Por lo tanto, es posible crear un algoritmo que encuentre las etiquetas adjuntas con el texto más limpio entre ellas, ¿alguna idea al respecto?

Gracias!

+1

Lynx usa su propio analizador de tags. El código fuente está disponible. – Quentin

Respuesta

24

Chico, tengo la solución perfecta para usted.

Algoritmo de legibilidad de Arc90 hace exactamente esto. Dado el contenido HTML, selecciona el contenido del texto principal de la entrada del blog, ignorando encabezados, pies de página, navegación, etc.

Éstos son implementaciones en:

Voy a liberar un puerto Perl para CPAN en un par de días. Hecho.

Espero que esto ayude!

+0

Resultó que esto funcionó muy bien - necesitaba hacer algunos cambios para mejorarlo (cambiar al analizador SGML en lugar de HTMLParser en beautifulsoup), ¡pero qué gran solución! Gracias –

+0

Una nota rápida: la herramienta de legibilidad de Arc90 tiene algunos puntos débiles. En una página compleja como esta (http://blog.moertel.com/articles/2007/02/22/a-simple-directory-tree-printer-in-haskell), silenciosamente deja caer la mayoría de los bloques de código. Ese es un problema significativo si vas a usarlo para extraer información de _coding_blogs. – Telemachus

+0

Gracias por los enlaces python y php, no sabía que existían. –

3

Hay proyectos que específicamente analizan filtrar el "ruido" de una página determinada. Por lo general, la forma en que esto se hace es dando al algoritmo algunos ejemplos de un tipo dado de página, y puede ver qué partes no cambian entre ellos. Dicho esto, tendrías que darle al algoritmo algunas páginas/publicaciones de ejemplo de en cada blog que quisieras analizar. Esto generalmente funciona bien cuando tienes un pequeño conjunto definido de sitios que estarás rastreando (sitios de noticias, por ejemplo). El algoritmo básicamente detecta la plantilla que utilizan en HTML y selecciona la parte interesante. Aquí no hay magia, es dura e imperfecta.

Un gran ejemplo de este alogrithm se puede encontrar en el código fuente de EveryBlock.com que fue de código abierto. Vaya a everyblock.com/code y descargue el paquete "ebdata" y mire el módulo "templatemaker".

Y no me refiero a decir lo obvio, pero ¿ha considerado usar RSS de los blogs en cuestión? Por lo general, los campos tienen toda la publicación del blog, el título y otra metainformación junto con ellos. Usar RSS va a ser mucho más simple que la solución anterior que mencioné.

+0

Sí, en realidad tengo los datos RSS, el problema es que muchos no tienen el texto completo, y lo necesito en todos los casos. Revisando esto ahora, gracias. –

Cuestiones relacionadas