2010-06-28 11 views
7

Tengo un par de sitios web de agregación de noticias de Twitter. He estado planeando agregar imágenes de artículos que encuentro en Twitter.Extrayendo * imagen * relevante de una página web

Si descargo la página y extraigo la imagen usando la etiqueta <img>, obtengo un montón de imágenes; no todos ellos relevantes para el artículo. Por ejemplo, se capturan imágenes de botones, iconos, anuncios, etc. ¿Cómo extraigo la imagen que acompaña al artículo? Sé que hay una solución: el usuario del enlace de Facebook lo hace bastante bien.

Mithun

Duplicado de: How to find and extract "main" image in website

Respuesta

1

yo supongo que Facebook tiene un extractor de enlace para los distintos sitios que soporta. Algo así como id = "content" -> img (1st).

Supongo que estoy equivocado. Parece que Facebook usa el Open Graph Protocol para definir qué imagen (og: imagen) y qué metadatos usar.

+0

Bueno OGP es algo que Facebook está empujando para que puedan extraer los meta-datos con precisión. Desafortunadamente, una gran cantidad de sitios web no siguen este estándar. – mithun

3

Tengo una solución que es un poco hacky pero que funciona para mí. Esto es lo que hago para obtener miniaturas.

  1. Diga el título de la página que encuentro es "esto es un titular"
  2. Puedo usar esto como una consulta a la API de imágenes de Google y luego extraer la primera miniatura que encuentro.

En realidad, funciona bastante bien para la mayoría de los casos. Compruébalo por ti mismo http://cricketfresh.in

Mithun

PS: Creo que esta es una buena respuesta. Dará crédito a alguien que viene con una respuesta más elegante.

7

Descargue todas las imágenes de la página, lista negra todas las imágenes procedentes de un servidor de anuncios. luego encontrar alguna heurística que le llevará la imagen correcta ...

creo que algo como:

  • resolución más grande + = 5 puntos
  • más grande del archivo tamaño + = 10 pts
  • JPEG + = 2 pts

luego tomar la imagen con la mayor cantidad de puntos y desechar el resto

Probablemente funciona para la mayoría de los sitios.

(requeriría algunos jugando con la heurística aunque)

+0

Este es el enfoque clásico y gracias por dejarlo aquí. Estaba un poco indeciso para seguir este camino porque no estaba seguro de cuánto tomará esto. Como dijiste, probablemente funcione bien después de un ajuste. Un par de factores más que encontré en otros lugares son: 1] la ruta de la imagen. 2] imágenes cuyo ancho y alto se especifican – mithun

3

Ha sido un largo tiempo. Pero esto puede ayudar la próxima vez.

Puede utilizar esta API https://urlmeta.org/

Es muy sencillo de utilizar y el resultado es el mejor que tenemos.

ejemplo de uso de la API:

<?php 
$url = "http://timesofindia.indiatimes.com/business/india-business/Raghuram-Rajan-not-fit-to-be-RBI-Governor-Subramanian-Swamy/articleshow/52236298.cms"; 

$result = file_get_contents('https://api.urlmeta.org/?url='.$url); 
$array = json_decode($result,1); 
print_r($array['meta']['image']); 

?> 

Y ese es el resultado que necesitaba.

+0

urlmeta.org es bastante genial. Funciona para casi todas las páginas de productos de comercio electrónico. – vaichidrewar