Programar un scrapper web en PHP

¿Cómo hacer scraping en cualquier página web con PHP?

Programar un scrapper web en PHP

¿Cómo hacer scraping en cualquier página web con PHP?

Escanear una web es fácil con la clase curl de PHP, extraeremos los metas title, description y keywords, tags de posicionamiento web de varias páginas web

El scrapeo o scrapping de contenidos en páginas es algo fascinante, talvez por que es la forma que Google escanea y extrae información de la páginas web para guardarlas en sus servidores, no si antes clasificarlas e indexarlas, obviamente para ello utiliza diferentes algoritmos de búsqueda y clasificación. 

¿Qué es Scrapping  o Scrapper?

Es un técnica para extraer información de una página web usando programas o scripts web que escanean la estructura HTML del sitio web. Realizar scrapping requiere de conocimientos avanzados o medianamente avanzados en programación y análisis de estructuras HTML.

¿Cómo hacer Scrapping en PHP de una página web?

En esta ocación utilizaremos la librería CURL soportada por PHP.  CURL es una biblioteca creada por Daniel Stenberg que permite comunicarse y comunicarse con diferentes tipos de servidores y diferentes tipos de protocolos.

Lo que intentaremos hacer es crear un pequeño aplicativo que scrapea cualquier página web, claro está si esta no tiene restricciones y si ésta es accesible por la pequeña araña que programaremos, el código es bastante sencillo, indicarles que hay librerías mucho mas sofisticadas y con mayor número de funcionalidades.

Empezaremos creando un archivo index.php donde colocaremos un formulario get en html con un campo de tipo text y un boton submit, veamos el código:

<form>
		<input type="url" name="url" placeholder="Ej. http://www.empresa.com" required>
		<button name="btn" type="submit">SCRAPEAR</button>		
</form>

Implementaremos dos funciones, la primera file_get_contents_curl($url), esta función se conectará mediante la clase curl y nos retornará el contenido de la web a través de la url:

function file_get_contents_curl($url){
      $ch = curl_init();
      curl_setopt($ch, CURLOPT_HEADER, 0);
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
      curl_setopt($ch, CURLOPT_URL, $url);
      curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
      $data = curl_exec($ch);
      curl_close($ch);
      return $data;
}

La segunda función limpiará una cadena de caracteres que no deseamos:

function limpiarString($String){ 
     $String = str_replace(array("|","|","[","^","´","`","¨","~","]","'","#","{","}",".",""),"",$String);
     return $String;
}

Siguiendo con la funcionalidad de la aplicación: una vez enviada la url con el formulario debemos parsear el contenido para poder extraer los metas

  • Title
  • Description
  • Keywords

Estos metas permiten que su página web sea indexable de forma óptima y asi aparecer en los resultados de búsqueda de Google y cualquier otro buscador como Yahoo, Bing, Ask, Altalaweb, etc.

 $url 	=	$_GET['url'];
	$html 	= 	file_get_contents_curl($url);                    
    $doc 	= 	new DOMDocument();
    @$doc->loadHTML($html);
    $nodes 	= 	$doc->getElementsByTagName('title');
    $title 	= 	limpiarString($nodes->item(0)->nodeValue);
    $metas 	= 	$doc->getElementsByTagName('meta');
    for ($i = 0; $i < $metas->length; $i++):
		$meta = $metas->item($i);
        if($meta->getAttribute('name') == 'description')
        	$description = limpiarString($meta->getAttribute('content'));
        if($meta->getAttribute('name') == 'keywords')
        	$keywords = limpiarString($meta->getAttribute('content'));
    endfor;
	echo "TITLE :<br>".$title."<br>";
    echo "DESCRIPTION :<br>".$description."<br>";
    echo "KEYWORDS :<br>".$keywords;

Y listo, hasta aquí ya podemos hacer scrapping de cualquier página web!!

Código completo para scrappear una página web

Código completo en PHP para extraer el contenido de una web

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>SCRAPPING WEB</title>
</head>
<body>
<?php
if(isset($_GET['btn'])):
    function file_get_contents_curl($url){
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_HEADER, 0);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
        $data = curl_exec($ch);
        curl_close($ch);
        return $data;
    }
    function limpiarString($String){ 
        $String = str_replace(array("|","|","[","^","´","`","¨","~","]","'","#","{","}",".",""),"",$String);
        return $String;
    }
    $url 	=	$_GET['url'];
	$html 	= 	file_get_contents_curl($url);                    
    $doc 	= 	new DOMDocument();
    @$doc->loadHTML($html);
    $nodes 	= 	$doc->getElementsByTagName('title');
    $title 	= 	limpiarString($nodes->item(0)->nodeValue);
    $metas 	= 	$doc->getElementsByTagName('meta');
    for ($i = 0; $i < $metas->length; $i++):
		$meta = $metas->item($i);
        if($meta->getAttribute('name') == 'description')
        	$description = limpiarString($meta->getAttribute('content'));
        if($meta->getAttribute('name') == 'keywords')
        	$keywords = limpiarString($meta->getAttribute('content'));
    endfor;
	echo "TITLE :<br>".$title."<br>";
    echo "DESCRIPTION :<br>".$description."<br>";
    echo "KEYWORDS :<br>".$keywords;
else:
?>
<form>
	<input type="url" name="url" placeholder="Ej. http://empresa.com" required>
	<button name="btn" type="submit">SCRAPEAR</button>		
</form>
<?php endif; ?>
</body>
</html>

 

¿Quieres descargar el código fuente Programar un scrapper web en PHP?
...por favor suscríbete gratuitamente para descargarlo

PHP CSS HTML
DESCARGAR CÓDIGO

Compártelo...talvez alguién lo necesite!

Whatsapp Messenger Facebook Twitter

Visitado 5259 veces | Publicado hace 2 años

Curso Laravel 8 Página Web 100% Administrable

Mira el temario del curso en el siguiente link

VER MÁS DETALLES DEL CURSO

Logo Codea App

Develop your code

Perú, México, Colombia, España, Venezuela, Argentina, Bolivia

© Todos los derechos reservados CODEA APP | Cursos de programación avanzados con proyectos reales | 2020