2012-07-24 35 views
9

No estoy seguro de cómo definirlo pero básicamente Quiero recuperar una imagen relevante resumen de texto a partir de una determinada URL.Obtener imagen y resumen pertinente de URL

Por ejemplo - cuando un usuario pega un enlace a la caja de compartir en Facebook, se pone inmediatamente el título del artículo y/o un bloque de texto corto desde el propio artículo y una imagen relevante. Nunca obtiene la imagen incorrecta, como el logotipo del sitio o el texto de alrededor del artículo en sí ...

Lo mismo para Google+ y otras redes sociales o servicios como estos.

Empecé suponiendo que necesito leer el contenido de la página usando el siguiente código, ¿cómo puedo determinar qué imagen es la relevante (desde el cuerpo del artículo) y qué texto es el texto del artículo?

URL oracle = new URL("http://www.oracle.com/"); 
BufferedReader in = new BufferedReader(
    new InputStreamReader(oracle.openStream())); 

String inputLine; 
while ((inputLine = in.readLine()) != null) 
    System.out.println(inputLine); 

in.close(); 

estoy, por supuesto, no pedir código aquí (a menos que alguien tiene un fragmento, por ejemplo, y está dispuesto a compartir) pero más por la forma de acercarse siquiera esto ... ¿por dónde empezar?

¡Cualquier ayuda será apreciada!

+1

Quizás te ayude http://stackoverflow.com/questions/5482897/extract-information-from-link-like-facebook-wall – logcat

+0

Gracias, lo investigaremos pero parece bastante limitado. Supongo que hay una manera más genérica de hacerlo en lugar de cómo lo hace Facebook. –

+0

Hola liorry, ¿has logrado hacer esto mientras tanto? Realmente apreciaría una actualización sobre el tema. ¡Gracias! – Cos

Respuesta

9

Puedo recomendar Boilerpipe para la extracción de texto en bruto, utiliza algunos algoritmos avanzados para encontrar el texto relevante y eliminar el texto que lo rodea (como menús, pies de página, etc.).

En cuanto a la imagen, además de usar metaetiquetas como ya se sugirió en los comentarios, puede usar un analizador html (como htmlparser) para extraer todas las etiquetas "img" y luego usar algunas heurísticas para seleccionar la mejor. Estoy usando algunas heurísticas como:

  • Sin imagen con menos de 30 píxeles, por lo general son iconos o imágenes seguimiento de anuncios
  • El cuadrado del mejor, esto evita gobernantes y cosas similares
  • No existe un estándar conocido tamaño de banner
  • la más alta en la página de la mejor
  • contenido Cerca extraído por la plancha de caldera (esto es duro)

he estado usando el se heurística en producción para raspar páginas durante algún tiempo y dan buenos resultados.

Sin embargo, para aplicar correctamente estas reglas, puede que tenga que descargar imágenes para conseguir su tamaño y/o analizar los atributos de estilo.

Si usted está planeando para ejecutar este lado del servidor, como un servicio de la página raspado, entonces está bien. Si planea hacerlo sobre la marcha en un dispositivo Android, podría ser demasiado pesado.

+0

gracias por la respuesta detallada. Esta información es un gran comienzo para mí. Me pregunto acerca de la aplicación Google+ de Android que parece estar buscando imágenes e información para publicaciones con enlaces ... pero quizás lo hagan en el lado del servidor ... lástima que esté ofuscado y no esté abierto :) –