cURL: ¿qué es y cómo puede usarlo para raspado de datos?

cURL es un comando versátil que se usa en programación para recopilar y transferir datos. ¿Cómo puede aprovechar cURL para raspar datos (web scraping)? Este articulo le ayudará a ponerse en acción.
7 min read
data collection and web scraping with cURL

En esta publicación de blog conocerá más acerca de:

¿Qué es cURL?

cURL es una herramienta basada en líneas de comandos que puede usar para transferir datos por medio de protocolos de red. El nombre cURL quiere decir “URL cliente” y se escribe como “curl”. Este popular comando usa sintaxis URL para transferir datos desde y hacia servidores. “libcurl”, es una librería para transferencias URL del lado del cliente, es gratuita y de uso sencillo y soporta a cURL.

¿Por qué es beneficioso usar cURL?

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

  • Autenticación de usuarios
  • Mensajes HTTP
  • Conexiones SSL
  • Soporte proxy
  • Subidas FTP

El “caso de uso” más sencillo de cURL es la carga y descarga de sitio web completos usando uno de los protocolos soportados.

Protocolos Curl

Mientras cURL tiene una larga lista de protocolos que soporta, usará HTTP de manera predeterminada si no se especifica un protocolo. Aquí se presenta una lista de protocolos soportados:

DICTFILEFTP
FTPSGOPHERHTTP
HTTPSIMAPIMAPS
LDAPPOP3RTMP
RTSPSCPSFTP
SMBSMBSTELNET
TFTP

Instalar curl

El comando cURL está instalado de manera predeterminada en distribuciones de Linux.

¿Cómo verifica si ya tiene cURL instalado?

1. Abrir la consola Linux

2. Ingresar “cURL” y presionar “Enter”.

3. Si cURL ya está instalado, se mostrará el mensaje:

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

4. Si no tiene cURL instalado, verá el siguiente mensaje: “comando no encontrado”. Entonces podrá recurrir al paquete de distribución e instalarlo (consultar más detalles más adelante).

Cómo utilizar cURL

La sintaxis de cURL es bastante sencilla:

curl [options] [url]

Por ejemplo, si desea descargar una página web (página web.com) solo ejecute:

curl www.webpage.com

Entonces, el comando le dará el código fuente de la página en la ventana de su terminal. Mantenga en mente que si no especifica un protocolo, cURL usará HTTP de manera predeterminada. Más adelante, podrá encontrar un ejemplo de cómo definir protocolos en específico:

curl ftp://webpage.com

Si olvida agregar :// cURL adivinará el protocolo que desea usar.

Hablamos con brevedad acerca del uso básico del comando; sin embargo, puede encontrar una lista de opciones en el sitio de documentación de cURL. Las opciones son las posibles acciones que podría realizar en la URL. Al elegir una opción, se dice a cURL qué acción realizar en la URL que enlistó. La URL dice a cURL dónde necesita realizar esta acción. Entonces, cURL le permite enlistar una o varias URLs.

Para descargar múltiples URLs, agregue como prefijo a cada URL un -0 seguido de un espacio. Esto puede realizarse en una sola línea o puede escribir una línea diferente para cada URL. También puede descargar parte de una URL enlistando la páginas. Por ejemplo:

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

 

Guardando la descarga 

Puede guardar el contenido de la URL en un archivo usando cURL con dos métodos diferentes:

1. Método -o : le 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 necesita agregar un nombre de archivo ya que esta opción le permite guardar el archivo bajo el nombre de la URL. Para usar esta opción, solo necesita agregar el prefijo -O a la URL.

Reanudar la descarga 

Es posible que su descarga se detenga a la mitad. En este caso, reescriba el comando, agregue la opción -C al inicio :

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

¿Por qué es tan popular curl? 

cURL en realidad es como la “navaja suiza” de los comandos, se creó para operaciones complejas. Sin embargo, hay alternativas, por ejemplo: “wget” o “Kurly” que funcionan bien con tareas más simples.

Entre desarrolladores, cURL es una favorita porque está disponible para casi cada plataforma. A veces, incluso está instalada de manera predeterminada. Esto significa que, sin importar qué programas o trabajo ejecuta, los comandos de cURL deben funcionar.

Además, es posible que si su SO tiene menos de una década de antigüedad, tendrá cURL instalado. También puede leer los documentos en un navegador y revisar la documentación de cURL. Si ejecuta un versión reciente de Windows, es probable que ya tenga cURL instalada. De no ser así, revise esta publicación en Stack Overflow para conocer más acerca de cómo hacerlo.

Usar cURL con proxies 

Algunas personas prefieren utilizar cURL junto con un proxy. Las ventajas son las siguientes  

  1. Aumentar la capacidad de gestionar con éxito las solicitudes de datos de diferentes geolocalizaciones.  
  2. Aumentar exponencialmente el número de trabajos de datos concurrentes que uno puede ejecutar simultáneamente.

Para ello, puede utilizar las funciones “-x” y “(- – proxy)” ya integradas en cURL. A continuación se muestra un ejemplo de la línea de comandos que puede utilizar para integrar el proxy que está 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.

  Es bueno saberlo: cUrl es compatible con la mayoría de los tipos de proxy más comunes actualmente en uso, incluyendo HTTP, HTTPS y SOCKS.  

Cómo cambiar el User-Agent 

Los Agentes de Usuario son características que permiten a los sitios de destino identificar el dispositivo que solicita la información. Un sitio de destino puede requerir que los solicitantes cumplan ciertos criterios antes de devolver los datos de destino deseados. Estos criterios pueden referirse al tipo de dispositivo, al sistema operativo o al navegador utilizado. En este escenario, las entidades que recopilan datos querrán emular al “candidato” ideal de su sitio de destino.

Por ejemplo, supongamos que el sitio web al que se dirige “prefiere” que los usuarios utilicen Chrome como navegador. Para obtener el conjunto de datos deseado utilizando 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/

Raspado web con cURL 

Tip pro: asegúrese de cumplir con las reglas de un sitio web y, en general, no intente tener acceso a contenido protegido por contraseña que sea mayormente ilegal o, al menos, mal visto.

Se puede usar cURL para automatizar el proceso repetitivo al raspar datos, que podría ayudarle a evitar tareas tediosas. Para este propósito, necesita usar PHP. A continuación, 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/');

?>

Existen tres opciones cuando se usa cURL para realizar raspado de una página web, debe usar:

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

Otras opciones que deben incluir:

  • Curlopt_url -> Establece la URL que se quiere raspar
CURLOPT_URL
  • Curlopt_returntransfer -> Le dice a curl que guarde la página raspada como una variable. (Esto permite obtener exactamente lo que se desea extraer de la página).
CURLOPT_RETURNTRANSFER

En resumen

Aunque cURL es una potente herramienta de raspado web, requiere que las empresas inviertan valioso tiempo de desarrollo tanto en la recopilación de datos como en su limpieza. Bright Data ha lanzado un raspador web totalmente automatizado que sirve como solución sin código. Permite a las empresas recopilar datos de sitios web de destino con solo pulsar un botón o simplemente solicitar el conjunto de datos deseado. Esto libera a DevOps y a otros miembros del equipo técnico para que se centren en el desarrollo de productos y la resolución de problemas.  

¿No estás seguro de qué producto elegir? Contacta con ventas para encontrar la solución adecuada para ti.