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í …
- ¿Dónde escribir @Override?
- Fragmento no se actualizará después de la notificación de apertura
- EXCEPCIÓN FATAL: main java.lang.RuntimeException: El contenido tiene vista con el atributo id 'android.R.id.list' que no es una clase ListView
- Cómo devolver array int de Java a JNI
- Uso de OAuth con Scribe en Android
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!
- Cómo convertir de java.util.HashMap a android.content.ContentValues?
- Creo que he llegado con la peor manera de comparar dos fechas; ¿es posible hacerlo mejor?
- Programáticamente eliminar SMS no funciona
- Android AndEngine: java.lang.IllegalArgumentException: No se encontró EGLConfig
- Configuración de la aplicación de Android
- ¿Puedo desarrollar aplicaciones de Android sin IDE?
- Código java para leer la imagen en lugar de obtener el marco
- Daga con Android: ¿Cómo inyectar el contexto cuando se utiliza MVP?
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.
- ¿Cómo Handler afecta la manera en que onReceiveResult (ResultReceiver) se invoca?
- Correcto manera de comprobar todas las casillas de verificación en ListView?