Web Scraping con PHP utilizando Goutte

Web Scraping es una técnica de extracción de datos en la que se obtiene información de los sitios web. En este articulo hablare que se necesita para realizar Scraping

· 2 min de lectura
Web Scraping con PHP utilizando Goutte

Hoy estare hablando de algo muy común, Web Scraping. Dependiendo de sus necesidades o de las necesidades de un cliente, pueden surgir situaciones en las que necesite extraer datos de una página web.

¿Qué es el Web Scraping?

Según WebHarvy — Web Scraping (también llamado Screen Scraping, Web Data Extraction, Web Harvesting, etc.) es una técnica empleada para extraer grandes cantidades de datos de sitios web. En su forma más simple, el web scraping es obtener el contenido de una página web a través de un script. Tuve la curiosidad de obtener datos de un sitio utilizando PHP, así que busqué artículos sobre el scraping web en PHP y me enteré de que había pocos y la mayoría de ellos estaban bastante desactualizados.

Sin embargo, en mi investigación, me encontré con Goutte; una (maravillosa) librería de screen scraping y web crawling para PHP. En su esencia, Goutte es una envoltura alrededor de tres de los componentes de Symfony; BrowserKit, CssSelector y DomCrawler. Es importante para nosotros entender qué hace cada uno de estos componentes, ya que nos ayuda a comprender cuán poderoso es Goutte.

BrowserKit

En pocas palabras, el componente BrowserKit simula el comportamiento de un navegador real. Es el elemento fundamental de Goutte.

DomCrawler

El componente DomCrawler facilita la navegación del DOM (Document Object Model).

$crawler = $crawler->filter('body > p');

También podemos atravesar nodos en el DOM usando algunos de los métodos que proporciona. Por ejemplo, si queremos obtener el primer párrafo en el cuerpo de la página, podemos hacerlo:

$crawler->filter('body > p')->eq(0);

El método eq() está indexado a cero y toma un número que especifica la posición del elemento al que queremos acceder.
Hay otros métodos como siblings(), first(), last(), etc.

CssSelector

El CssSelector es un maravilloso componente que nos permite seleccionar elementos a través de sus selectores CSS. Esto lo hace convirtiendo los selectores CSS a sus equivalentes XPath. Por ejemplo, si queremos seleccionar un elemento con una clase llamada .fire, podemos hacerlo:

$crawler->filter('.fire');

El componente CssSelector es tan sorprendente que incluso soporta CSS. El ejemplo esta buscando un elemento div con un atributo de estilo:

$crawler->filter('div[style*="max-height:175px; overflow: hidden;"]');
Para más información, por favor lea la documentación de DomCrawler, CssSelector y Goutte

Muy bien, ahora que tenemos una pequeña idea sobre los tres componentes principales, es hora de que unamos todas las cosas y hagamos algo. Como ya se habrá dado cuenta, cuando se trata de scraping, no hay una forma establecida de hacerlo. Usted es libre de explorar y probar tantas formas de obtener sus datos. El único límite que tienes es tu creatividad.

En un próximo articulo pondré en juego todo lo que se ha mencionado hasta ahora realizando un  Scraping a una pagina web.

Source: Sayo Paul


Artículo anterior

Te enseño como descargar los nuevos stickers para WhatsApp de forma gratis

Tras muchos meses de espera, los Stickers de WhatsApp por fin son una realidad para ser compartidas en los chat y grupos.

Artículo siguiente

Una introducción a la herramienta de depuración de Javascript console.table()

Muestra data como una tabla en la consola. Cada elemento en el array (o propiedad enumerable si data es un objeto) será una fila en la tabla.

Artículos Relacionados

Como obtener al padre de un elemento con vanilla JS

Como obtener al padre de un elemento con vanilla JS

· 1 min de lectura
Cómo utilizar window.confirm()

Cómo utilizar window.confirm()

· 1 min de lectura
Como elegir una clave SSH para un host especifico

Como elegir una clave SSH para un host especifico

· 1 min de lectura
Como detectar un elemento sticky cuando se queda fijo

Como detectar un elemento sticky cuando se queda fijo

· 1 min de lectura
Convertir una cadena en un array en JavaScript

Convertir una cadena en un array en JavaScript

· 2 min de lectura
Video responsive de YouTube y Vimeo con HTML y CSS

Video responsive de YouTube y Vimeo con HTML y CSS

· 1 min de lectura