Web scraper con PHP

scraper
Alguna vez te has planteado crear un programa que pueda extraer información de una web y has pensado que es un tarea realmente complicada. Vas a comprobar que es realmente sencillo poder sacar información de otra web. Empezaré con un ejemplo muy básico, después comentaré algunos framework que ayudarán al rastreo y extracción de datos y por último una aplicación que he conocido recientemente en la que puedes crearte un API con datos de una web.

Ejemplo básico

Antes que nada en este ejemplo básico vamos a usar dos funciones que son:

  1. file_get_contents: tiene como parámetro una URL y devuelve el contenido en HTML de esta. Ver documentación
  2. preg_match: sirve para encontrar coincidencias dentro de una cadena, usando expresiones regulares. Ver documentación

En el siguiente ejemplo vamos a sacar el título de mi web, que es lo que está dentro de la etiqueta <title> (en este caso es: Blog | Nicolás Marín)

$html = file_get_contents('http://www.nicolasmarin.com/');
preg_match('/<title>(.*)<\/title>/i', $html, $title);
$title_out = $title[1];

Y poco más se puede decir de este sencillo ejemplo, que sólo hace falta ponerle un poco de creatividad y sacarás cualquier elemento de una web.

Frameworks en PHP

En esta sección vamos a comentar algunos de los frameworks más completos que he encontrado para PHP, no se trata de una documentación ni de ejemplos porque esto ya lo encontrarás en cada una de las webs de dichas librerías. Estos son los frameworks para scrapear en PHP:

  1. Goutte : es una librería de rastreo web en PHP. Goutte proporciona una agradable API para rastrear sitios web y extraer los datos de las respuestas ya sea HTML o XML. Ha sido creado con Symfony2, por lo que si tu proyecto PHP empleas este framework te viene genial para integrarlo.
  2. Guzzle: es un framework que incluye las herramientas necesarias para crear un cliente robusto de servicios web. Incluye: descripciones de Servicio para definir las entradas y salidas de una API, iteradores para recorrer webs paginadas, procesamiento por lotes para el envío de un gran número de solicitudes de la manera más eficiente posible. También ha sido creado usando Symfony2.
  3. Snoopy: es una clase PHP que simula un navegador web. Automatiza la tarea de recuperar los contenidos de la página web y la publicación de los formularios, por ejemplo.
  4. PHPCrawl: es un framework para el rastreo de sitios web usando el lenguaje de programación PHP, por lo que es conocido como la librería webcrawler o rastreador de PHP. Ofrece varias opciones para especificar el comportamiento de la extracción como filtros Content-Type, manejo de cookie, manejo de robots.txt, limitación de opciones, multiprocesamiento y mucho más.

Import.io

Interesante proyecto en el que puedes acceder a cualquiera web como si tuviera un API, sin necesidad de que ésta lo ofrezca. Sólo tienes que crear un conector desde un programa que te descargas e indicar los datos que vas a extraer de tal web y el ya se encarga de ofrecértelo en un formato más cómodo. Lo bueno también es que si en algún momento la estructura del HTML de la web cambia este te avisa para que le vuelvas a indicar donde están los datos que deseas sacar.
Visita Import.io

Si conoces otros framework o aplicaciones similares a import.io compártelas en un comentario 🙂

You may also like...