2010-11-26 13 views
34

¿Alguien de un algoritmo que extrae contenidos de una página web? como instapaper?Algoritmo similar a Instapaper

+6

Qué tipo de contenido, esto es tan vago que casi duele. Hay cientos de maneras de analizar y extraer contenido de una página web que abarca desde una aplicación completa hasta wget y egrep. Tendrás que ser mucho más específico. – austinbv

+8

@zobgib Él dice "como instapaper" en justicia: http://www.instapaper.com/ – Orbling

+1

"como un instapaper" se refiere a extraer el contenido textual de un artículo sin tener en cuenta el navegador, los encabezados y los pies de página. – Joel

Respuesta

49

Hay dos pasos a lo que hace Instapaper:

  1. Encuentra principal contenido bloque en la página (excluyendo los encabezados, pies de página, menús, etc.)
  2. A partir de este bloque de contenido extracto de y formato el texto

Para encontrar el bloque de contenido (generalmente un elemento de bloque html, como un div que contiene th Contenido de texto de la página clave) Instapaper usa un algoritmo muy parecido al utilizado por readability. Puede ver el source of readability.js para ver qué está sucediendo, pero en su núcleo trata de encontrar el área en la página con la relación de texto/enlace más alta, aunque también tiene otras métricas de puntuación simples (por ejemplo, fuera de mi cabeza) , cosas como proporción de texto a comas, para elementos, etc.) que entran en la heurística.

Una vez que haya identificado el elemento del nodo raíz, con el contenido relevante, tendrá que formatearlo, si lo desea, puede extraer el elemento nodo que contiene el texto del documento fuente e insertarlo en el suyo, pero, en realidad, es probable que desee eliminar los estilos existentes y aplicar los propios, para obtener un aspecto estándar. Si desea dar como resultado solo texto agradable, puede usar el Renderer de Jericho.

Update1: También debo mencionar algo más Instapaper hace - que es seguir los enlaces 'de paginación' (el "siguiente" o "1", "2", "3" enlaces) del artículo su conclusión, para que una pieza que puede abarcar muchas páginas en el original se le represente como un documento único.

update2 Hace poco encontré este comparison of text extraction algorithms

2

Si lo que desea todo el contenido y ninguna parte del formato en Python

>>> from BeautifulSoup import BeautifulSoup 
>>> from urllib import urlopen 
>>> soup = BeautifulSoup(urlopen("http://www.python.org/").read()) 
>>> contents = ''.join(soup.findAll(text=True)) 

hace el truco

+0

Tenga en cuenta que este es obviamente un enfoque extremadamente ingenuo y que incorporará * cualquier * contenido en la página, incluido cualquier elemento en el encabezado, la barra lateral y el pie de página.Probablemente no sea lo que quiere si le muestra el texto a un usuario. –

6

no es un código abierto aplicación que analiza el texto de un artículo desde cualquier página web

https://github.com/jiminoc/goose/wiki

debe hacer el truco

+0

¿Alguien hizo la comparación de rendimiento entre ** Goose ** y ** Boilerpipe **? – c24b

2

boilerpipe es Java de código abierto. el algoritmo se publica en un artículo científico para que pueda leer qué tan bien lo hace en comparación con otros algoritmos. leer a su alrededor parece ser uno de los mejores.