cURL: Qué es y cómo puedes usarlo para el scraping web

cURL es un comando versátil utilizado por programadores para la recopilación y transferencia de datos. ¿Pero cómo puedes aprovechar cURL para el scraping web? Este artículo te ayudará a comenzar.
7 min de lectura
data collection and web scraping with cURL

En esta publicación del blog aprenderás:

  • ¿Qué es cURL?
  • ¿Cómo usar cURL?
  • ¿Por qué cURL es tan popular?
  • Usar cURL con proxies
  • Cómo cambiar el User-Agent
  • Scraping web con cURL

¿Qué es cURL?

cURL es una herramienta de línea de comandos que puedes usar para transferir datos mediante protocolos de red. El nombre cURL significa ‘Client URL’, y también se escribe como ‘curl’. Este popular comando utiliza la sintaxis URL para transferir datos hacia y desde servidores. Curl está impulsado por ‘libcurl’, una biblioteca de transferencia URL del lado del cliente gratuita y fácil de usar.

¿Por qué es ventajoso usar curl?

La versatilidad de este comando significa que puedes usar curl para una variedad de casos de uso, incluyendo:

  • Autenticación de usuarios
  • Publicaciones HTTP
  • Conexiones SSL
  • Soporte de Proxy
  • Cargas FTP

El ‘caso de uso’ más simple para curl sería descargar y cargar sitios web completos usando uno de los protocolos compatibles.

Protocolos de Curl

Aunque curl tiene una larga lista de protocolos compatibles, usará HTTP de forma predeterminada si no proporcionas un protocolo específico. Aquí está la lista de protocolos compatibles:

DICT FILE FTP
FTPS GOPHER HTTP
HTTPS IMAP IMAPS
LDAP POP3 RTMP
RTSP SCP SFTP
SMB SMBS TELNET
TFTP

Instalando curl

El comando curl está instalado de forma predeterminada en las distribuciones de Linux.

¿Cómo compruebas si ya tienes curl instalado?

1. Abre tu consola de Linux

2. Escribe ‘curl’ y presiona ‘enter’.

3. Si ya tienes curl instalado, verás el siguiente mensaje:

curl: try 'curl --help' for more information

4. Si no tienes curl instalado, verás el siguiente mensaje: ‘command not found’. Luego puedes recurrir al paquete de distribución e instalarlo (más detalles a continuación).

Cómo usar cURL

La sintaxis de Curl es bastante simple:

curl [options] [url]

Por ejemplo, si quieres descargar una página web: webpage.com solo ejecuta:

curl www.webpage.com

El comando te dará el código fuente de la página en tu ventana de terminal. Ten en cuenta que si no especificas un protocolo, curl usará HTTP de forma predeterminada. A continuación puedes encontrar un ejemplo de cómo definir protocolos específicos:

curl ftp://webpage.com

Si olvidas añadir el :// curl intentará adivinar el protocolo que deseas usar.

Hablamos brevemente sobre el uso básico del comando, pero puedes encontrar una lista de opciones en el sitio de documentación de curl. Las opciones son las posibles acciones que puedes realizar en la URL. Cuando eliges una opción, le indica a curl qué acción realizar en la URL indicada. La URL le dice a cURL dónde debe realizar esta acción. Luego cURL te permite listar una o varias URLs.

Para descargar múltiples URLs, agrega el prefijo -0 seguido de un espacio antes de cada URL. Puedes hacerlo en una sola línea o escribir una línea diferente para cada URL. También puedes descargar parte de una URL listando las páginas. Por ejemplo:

 curl.exe -O http://example.com/page{1,4,6}.html

Guardando la descarga

Puedes guardar el contenido de la URL en un archivo usando curl mediante dos métodos diferentes:

1. Método -o: Te permite agregar un nombre de archivo donde se guardará la URL. Esta opción tiene la siguiente estructura:

curl -0 filename.html http://example.com/file.html

2. Método -O: Aquí no necesitas agregar un nombre de archivo, ya que esta opción te permite guardar el archivo con el nombre de la URL. Para usar esta opción, solo necesitas agregar el prefijo -O antes de la URL.

Reanudando la descarga

Puede ocurrir que tu descarga se detenga a la mitad. En este escenario, reescribe el comando agregando la opción -C al principio:

curl -C - -O http://website.com/file.html

¿Por qué curl es tan popular?

Curl es realmente la ‘navaja suiza’ de los comandos, creado para operaciones complejas. Sin embargo, existen alternativas, como ‘wget’ o ‘Kurly’, que son buenas para tareas más simples.

Curl es el favorito entre los desarrolladores porque está disponible para casi todas las plataformas. A veces incluso viene instalado de forma predeterminada. Esto significa que, independientemente de los programas o trabajos que estés ejecutando, los comandos curl deberían funcionar.

Además, si tu sistema operativo tiene menos de una década de antigüedad, es probable que ya tengas curl instalado. También puedes leer la documentación en un navegador y consultar la documentación de curl. Si estás ejecutando una versión reciente de Windows, probablemente ya tengas curl instalado. Si no es así, consulta esta publicación en Stack Overflow para obtener más información sobre cómo hacerlo.

Usar cURL con proxies

Algunas personas pueden preferir usar cURL junto con un Proxy. Los beneficios incluyen:

  1. Aumentar la capacidad de gestionar con éxito solicitudes de datos desde diferentes geolocalizaciones.
  2. Incrementar exponencialmente el número de trabajos de datos concurrentes que se pueden ejecutar simultáneamente. 

Para lograr esto puedes hacer uso de las capacidades ‘-x’ y ‘(- – proxy)’ ya integradas en cURL. Aquí tienes un ejemplo de la línea de comandos que puedes usar para integrar el Proxy que estás utilizando con cURL:

$ curl -x 026.930.77.2:6666 http://linux.com/

En el fragmento de código anterior, ‘6666’ es un marcador de posición para el número de puerto, mientras que ‘026.930.77.2’ es la dirección IP. 

Bueno saber: cUrl es compatible con la mayoría de los tipos de Proxy comunes actualmente en uso, incluidos HTTP, HTTPS y SOCKS.

Cómo cambiar el User-Agent

Los User-Agents son características que permiten a los sitios de destino identificar el dispositivo que solicita información. Un sitio de destino puede requerir que los solicitantes cumplan ciertos criterios antes de devolver los datos de destino deseados. Esto puede referirse al tipo de dispositivo, sistema operativo o navegador utilizado. En este escenario, las entidades que recopilan datos querrán emular el ‘candidato’ ideal del sitio de destino. 

Por ejemplo, supongamos que el sitio al que te diriges ‘prefiere’ que las partes solicitantes usen Chrome como navegador. Para obtener el conjunto de datos deseado usando cURL, será necesario emular este ‘rasgo del navegador’ de la siguiente manera: 

curl -A "Goggle/9.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Chrome/103.0.5060.71" https://getfedora.org/

Scraping web con cURL

Consejo profesional: Asegúrate de cumplir con las reglas de un sitio web y, en general, no intentes acceder a contenido protegido con contraseña, lo cual es ilegal en la mayoría de los casos o al menos está mal visto.

Puedes usar curl para automatizar el proceso repetitivo en el scraping web, ayudándote a evitar tareas tediosas. Para eso, necesitarás usar PHP. Aquí hay un ejemplo que encontramos en GitHub:


<?php

/**
 * @param string $url - the URL you wish to fetch.
 * @return string - the raw HTML response.
 */
function web_scrape($url) {
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
    $response = curl_exec($ch);
    curl_close($ch);

    return $response;
}

/**
 * @param string $url - the URL you wish to fetch.
 * @return array - the HTTP headers returned.
 */
function fetch_headers($url) {
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_HEADER, 1);
    $response = curl_exec($ch);
    curl_close($ch);

    return $response;
}

// Example usage:
// var_dump(get_headers("https://www.example.com"));
// echo web_scrape('https://www.example.com/');

?>

Cuando usas curl para hacer scraping de una página web, hay tres opciones que debes usar:

  • Inicializa la sesión
curl_init($url)
  • Ejecuta la sesión
curl_exec()
  • Cierra la sesión
curl_close()

Otras opciones que debes usar incluyen:

  • Establece la URL que deseas scrapear
CURLOPT_URL
  • Le indica a curl que guarde la página scrapeada como una variable. (Esto te permite obtener exactamente lo que querías extraer de la página.)
CURLOPT_RETURNTRANSFER

Conclusión

Si bien cURL es una poderosa herramienta de scraping web, requiere que las empresas utilicen valioso tiempo de desarrollo tanto en la recopilación de datos como en la limpieza de datos. Aquí es donde entra Bright Data. Bright Data, la infraestructura de datos web número 1 del mundo, tiene una amplia gama de productos para ayudar con las necesidades de scraping web. Los productos de Bright Data incluyen las APIs de Web Scraper diseñadas pensando en los desarrolladores, un navegador automatizado con automatización de desbloqueo de sitios web integrada, un mercado de conjuntos de datos para quienes prefieren recibir datos precisos en lugar de scrapear, y 400M+ monthly proxies confiables.