Extraer URLs de imágenes de una web
Publicado en Programación el 29 de May de 2009 por Manel Pérez MataTags: Expresiones Regulares, PHP, Script
¿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;
}













(1 votes, average: 4.00 out of 5)
May 29th, 2009 10:41
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?
May 29th, 2009 11:11
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.
May 29th, 2009 11:20
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.
May 29th, 2009 11:24
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.