Obtenga la imagen y el resumen relevantes de la URL

No estoy seguro de cómo definirlo, pero básicamente quiero recuperar una imagen relevante y el resumen de texto de una determinada URL.

Por ejemplo, cuando un usuario pega un enlace al cuadro compartido en Facebook, obtiene inmediatamente el título del artículo y / o un breve bloque de texto del propio artículo y una imagen relevante. Nunca obtiene la imagen equivocada, como el logotipo del sitio o el texto de todo el artículo en sí …

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

Empecé por asumir que necesito leer el contenido de la página usando el siguiente código, ¿cómo puedo determinar qué imagen es la relevante (del 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(); 

Por supuesto, no estoy pidiendo código aquí (a menos que alguien tiene un fragmento, por ejemplo, y está dispuesto a compartir), pero más de cómo acercarse a esto … ¿por dónde empiezo?

¡Cualquier ayuda será apreciada!

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

En cuanto a la imagen, aparte de usar metaetiquetas como ya se sugirió en los comentarios, podría utilizar 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:

  • No hay imagen inferior a 30px, por lo general son iconos o imágenes de seguimiento de anuncios
  • El cuadrado mejor, esto evita gobernantes y cosas similares
  • Ningún tamaño de banner estándar conocido
  • Cuanto más alto en la página, mejor
  • Cerca del contenido extraído por Boilerplate (esto es difícil)

He estado utilizando estas heurísticas en la producción para el raspado de la página durante algún tiempo y dan buenos resultados.

Sin embargo, para aplicar correctamente estas reglas, es posible que necesite descargar imágenes para obtener su tamaño y / o analizar atributos de estilo.

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

  • No puedo pasar demasiado grande arraylist de objetos entre 2 actividades?
  • Android Studio org.slf4j.spi.LocationAwareLogger.log
  • ¿Hay algunas herramientas para implementar el enfoque de "Código primero" en Android
  • No se puede actualizar el widget android desde BroadcastReceiver
  • Cómo iniciar la pantalla de inicio mediante programación en Android
  • División de una cadena en Java lanza PatternSyntaxException
  • ¿El módulo no puede ser Android Library?
  • El valor en edittext no se muestra hasta que se enfoque. Androide
  • Android Java; ¿Cómo puedo analizar un archivo JSON local de carpeta de activos en un ListView
  • ¿Cómo puedo mover una imagen de un punto a otro mediante Android Canvas?
  • Obtener el número de teléfono en formato XXX-XXX-XXXX desde el cuadro edittext en android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.