Extraer URLs de imágenes de una web

¿Nunca habeis necesitado extraer todas las URLs de las imágenes de una web? Pues con este script mostraremos por pantalla las rutas de todas las imágenes contenidas en la página $url

$url = "http://www.elmejorcoche.com";

$html = file_get_contents($url);

preg_match_all("/<img[\s]+[^>]*?src[\s]?=[\s\"\']+(.*\.([gif|jpg|png|bmp|jpeg|tiff]{3,4}))[\"\']+.*?>/", $html, $images);

$images = $images[1];
$list = array();

foreach($images as $img) {
	echo $img."<br>";
}

Si tu versión de PHP es inferior a 4.3.0 (en primer lugar te recomiendo pasar a PHP5) puedes usar la siguiente función en lugar de file_get_contents:

function getHtml($url) {
    $foo = @fopen($url,"r");
    if($foo){
        while(!feof($foo)){
            $html.=fgets($foo);
        }
    }
    return $html;
}

4 thoughts on “Extraer URLs de imágenes de una web

  1. Realmente es necesario hacer la comprobación de la extensión? Si estamos leyendo un tag “img” siempre tendremos una imagen en el atributo “src”, no?

  2. Sí y no… a veces se utiliza el tag img para añadir código de seguimiento haciendo que el src de la imágen ataque a una url del estilo (y me lo estoy inventando al vuelo):

    <img src=”http://www.tecnoretales.com/contador-visitas.php” width=”0″ height=”0″ />

    Esto por ejemplo, suele hacerse si queremos tener un contador de visitas en un site externo; por ejemplo, queremos contar cuanta gente ha visto un anuncio nuestro publicado en loquo, pues añadimos ese tag y currandose el script contador-visitas.php vamos contando.

    Cuando hice este código, necesitaba limitar los formatos a los que se indican, en cualquier caso, quitando esto \.([gif|jpg|png|bmp|jpeg|tiff]{3,4}) de la regular expression, las cogerá todas.

  3. Ahm pues no tenia ni idea de es técnica. A priori parece un poco raro y/o chapucero pero si dices q se usa, pues no voy a ser yo quien te contradiga.

  4. Cierto, yo también lo encuentro algo chapucero, peeeeero se usa y bastante, sobre todo en mailings de empresas, con eso consiguen estadísticas bastante fiables de número de aperturas.

Comments are closed.