Hacer web scraping con PHP

Por Juan José Pino Reyes
Hacer web scraping con PHP

En este tutorial aprenderemos a hacer web scraping solo con PHP y a hacer web scraping con cURL y PHP. También conoceremos para qué fines lo podemos utilizar.

Web scraping

Para los que no estén familiarizados con el término web scraping, deben saber que es un técnica empleada para extraer información de sitios web. Con unas cuantas líneas de código puedes recorrer el código fuente de una página web tal y como se ve en el navegador, guardarlo en una base de datos, mostrarlo de manera idéntica en una URL propia, extraer solo información importante dentro del código, entre otros.

Web scraping con PHP

Para seguir los pasos indicados en este tutorial primero debemos tener instalado XAMPP en nuestro sistema operativo Windows, puedes utilizar otros entornos, inclusive otros sistemas operativos, solo debes asegurarte cuente con PHP.

Para los que aún no tengan instalado XAMPP en Windows, pueden revisar el siguiente tutorial: https://devcode.la/tutoriales/instalar-xampp-en-windows-7/.

Luego, en el Panel de Control de XAMPP activaremos el módulo Apache.

Panel de Control de XAMPP

A continuación en nuestra carpeta htdocs, ubicada dentro de la carpeta xampp en nuestro disco C, creamos nuestra carpeta webscraping dentro de la cual crearemos el archivo index.php, luego escribiremos el siguiente código:


<?php 
$html = file_get_contents('https://devcode.la/'); //Convierte la información de la URL en cadena
echo $html;
?>

Una vez creado el archivo index.php con su respectivo código, abrimos en nuestro navegador la siguiente URL http://localhost/webscraping/, que es la URL donde se muestra el resultado de nuestro código anterior.

web scraping con php

Y vemos que copia de manera idéntica la página web https://devcode.la, revisemos el código PHP para comprender lo que sucedió.

En la variable $html se almacenó el resultado de la función file_gets_content, lo que hace file_gets_content es convertir la información de un fichero en una cadena, siendo el fichero en este caso la página web https://devcode.la.

Luego esta cadena la mostramos en nuestro documento haciendo uso de “echo”.

Web scraping con cURL y PHP

Ahora veamos cómo podemos hacer web scraping haciendo uso de la librería cURL, para esto creamos nuestro archivo curl.php dentro de la carpeta /webscraping creada anteriormente y escribimos el siguiente código:


<?php 

    // Definimos la función cURL
    function curl($url) {
        $ch = curl_init($url); // Inicia sesión cURL
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); // Configura cURL para devolver el resultado como cadena
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // Configura cURL para que no verifique el peer del certificado dado que nuestra URL utiliza el protocolo HTTPS
        $info = curl_exec($ch); // Establece una sesión cURL y asigna la información a la variable $info
        curl_close($ch); // Cierra sesión cURL
        return $info; // Devuelve la información de la función
    }

    $sitioweb = curl("https://devcode.la");  // Ejecuta la función curl escrapeando el sitio web https://devcode.la and regresa el valor a la variable $sitioweb
    echo $sitioweb;
?>

Dentro del código en los comentarios encontrarás la explicación de cada línea, resumiendo, primero creamos una función llamada curl, también se pudo realizar directamente sin crear la función, luego iniciamos sesión con curl_init, luego hicimos un par de configuraciones, CURLOPT_RETURNTRANSFER va relacionado a poder utilizar el resultado como cadena y CURLOPT_SSL_VERIFYPEER nos sirvió para que cURL pueda funcionar en nuestra URL a pesar de tener el protocolo HTTPS.

Luego al final utilizamos la función curl creada para mostrar nuestra página web escrapeada.

web scraping con curl y php

En conclusión, podemos ver que existe más de una manera de hacer web scraping con PHP. Este tutorial intenta hacer un acercamiento hacia este tema, sin embargo existen más posibilidades de cómo tratar la información escrapeada.

Recuerda además que en nuestra plataforma puedes encontrar un curso de Fundamentos de PHP por sí no estas familiarizado con este lenguaje de programación y deseas aprenderlo desde cero.

¿Te gustó el tutorial?

Ayúdanos a llegar a más personas

Juan José Pino Reyes

Juan José Pino Reyes

CMO y Co-fundador de Devcode.la, Google Adwords Certified, Google Analytics Certified, Hootsuite Certified, con experiencia y apasionado por el Marketing digital, HTML5, CSS3, JavaScript y PHP.