Extraer el contenido principal de una página web

Tengo una lista de 1000 URL que apuntan a artículos de noticias. Estoy buscando un programa (CLI si es posible) o bibliotecas (C++/Java o lenguajes interpretados de preferencia) que puedan tomar una URL como entrada y generar el contenido principal de una página escrita en inglés. Está bien si está especializado solo en artículos de noticias.

Por ejemplo, si la URL de entrada es http://news.sky.com/story/384359/russia-fake-vodka-kills-25-people , debería devolver:

Contenido:

Una forma mortal de vodka falso mató a 25 personas en Rusia, lo que llevó a la policía a emitir una advertencia pública. El lote de alcohol ilegal ha sido rastreado hasta el extremo este del país en Siberia.

Las agencias de noticias locales informaron que 25 personas habían comprado bebidas contaminadas con metanol, una forma de alcohol que puede causar ceguera o la muerte.

Después de que pareció que sus muertes podrían estar relacionadas, la policía emitió una advertencia a los residentes locales para que evitaran comprar el sustituto del vodka.

Desde entonces, cuatro mujeres han sido arrestadas por dirigir una destilería ilegal que pudo haber producido las bebidas mortales.

Aunque el vodka es muy barato en Rusia, muchos prefieren comprar variedades caseras, conocidas como "samogan", para ahorrar dinero.

El vodka falso a menudo se elabora con alcohol de madera destinado a fines industriales.

El envenenamiento por alcohol mata a miles de rusos cada año; 39.000 murieron sólo en 2004.

Título:

Rusia: Vodka falso mata a 25 personas

A ser posible, gratis y funcionando con Windows 7 o Linux.

Respuestas (2)

Boilerpipe está escrito en Java y hace exactamente eso.

Puedes probar su demo . La demostración a veces supera la cuota y deja de estar disponible; si eso sucede, inténtalo de nuevo más tarde.

Me pareció muy útil y fácil de implementar.

La última vez que estuve en esto, nada se acercó a Boilerpipe. También alguien lo había portado a C#.

En primer lugar, no hay razón para usar C++, quédese con los lenguajes de secuencias de comandos (Python, Ruby, PHP o JavaScript funcionarán bien). Porque estará iterando con frecuencia y también porque el cuello de botella nunca será el análisis sino la latencia de la red. También tenga en cuenta que debería estar trabajando desde la CLI.

El concepto es el siguiente:

  • Recupere la fuente de la página HTML, curl es una buena biblioteca para eso
  • Resuelva cualquier problema de codificación (fuerce todo a UTF-8 para simplificar)
  • Analice el contenido para obtener solo lo que busca (idealmente con un analizador DOM, de lo contrario RegEx)
  • Almacenar los resultados en una base de datos

Hay muchos marcos que se encargarán de las tareas mundanas, solo debe escribir las funciones de raspado. El título probablemente estará entre las <title>etiquetas, en cuanto al contenido, puede hacerlo manualmente para obtener más precisión según la cantidad de dominios diferentes que esté raspando, o automáticamente si es demasiado diverso. En este caso, intente buscar <p>etiquetas o grandes blogs de texto sin marcado HTML que no sea de texto con Regex.

En cuanto a los marcos en sí, puede echar un vistazo a:

  • Gota (PHP)
  • Scrappy (Python)
  • Beautiful Soup (Python) y Rubiful Soup (Ruby)
  • Nodo + Cheerios (JavaScript del lado del servidor, ¡selectores jQuery CSS muy potentes!)