cURL: O Que É e Como Usá-lo para Scraping de Dados

cURL é um comando versátil usado por programadores para coleta e transferência de dados. Mas como você pode aproveitar o cURL para scraping de dados? Este artigo ajudará você a começar.
7 min de leitura
data collection and web scraping with cURL

Neste artigo do blog você aprenderá:

  • O que é cURL?
  • Como usar cURL?
  • Por que o cURL é tão popular?
  • Usando cURL com proxies
  • Como alterar o User-Agent
  • Scraping de dados com cURL

O Que É cURL?

cURL é uma ferramenta de linha de comando que você pode usar para transferir dados via protocolos de rede. O nome cURL significa ‘Client URL’, e também é escrito como ‘curl’. Este popular comando usa sintaxe de URL para transferir dados de e para servidores. O Curl é alimentado pela ‘libcurl’, uma biblioteca de transferência de URL do lado do cliente gratuita e fácil de usar.

Por que usar curl é vantajoso?

A versatilidade deste comando significa que você pode usar o curl para diversos casos de uso, incluindo:

  • Autenticação de usuário
  • Posts HTTP
  • Conexões SSL
  • Suporte a Proxy
  • Uploads FTP

O ‘caso de uso’ mais simples para o curl seria baixar e fazer upload de sites inteiros usando um dos protocolos suportados.

Protocolos do Curl

Embora o curl tenha uma longa lista de protocolos suportados, ele usará HTTP por padrão se você não fornecer um protocolo específico. Aqui está a lista de protocolos suportados:

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

Instalando o curl

O comando curl é instalado por padrão nas distribuições Linux.

Como verificar se você já tem o curl instalado?

1. Abra seu console Linux

2. Digite ‘curl’ e pressione ‘enter’.

3. Se você já tiver o curl instalado, verá a seguinte mensagem:

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

4. Se você não tiver o curl instalado, verá a seguinte mensagem: ‘command not found’. Você pode então recorrer ao pacote de sua distribuição e instalá-lo (mais detalhes abaixo).

Como usar o cURL

A sintaxe do Curl é bastante simples:

curl [options] [url]

Por exemplo, se você quiser baixar uma página: webpage.com, basta executar:

curl www.webpage.com

O comando então exibirá o código-fonte da página na sua janela de terminal. Lembre-se de que, se você não especificar um protocolo, o curl usará HTTP por padrão. Abaixo você pode encontrar um exemplo de como definir protocolos específicos:

curl ftp://webpage.com

Se você esquecer de adicionar o :// o curl tentará adivinhar o protocolo que você deseja usar.

Falamos brevemente sobre o uso básico do comando, mas você pode encontrar uma lista de opções no site de documentação do curl. As opções são as ações possíveis que você pode realizar na URL. Ao escolher uma opção, você informa ao curl qual ação executar na URL indicada. A URL informa ao cURL onde ele precisa executar essa ação. O cURL permite listar uma ou várias URLs.

Para baixar várias URLs, prefixe cada URL com -0 seguido de um espaço. Você pode fazer isso em uma única linha ou escrever uma linha diferente para cada URL. Você também pode baixar parte de uma URL listando as páginas. Por exemplo:

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

Salvando o download

Você pode salvar o conteúdo da URL em um arquivo usando o curl de duas maneiras diferentes:

1. Método -o: Permite adicionar um nome de arquivo onde a URL será salva. Esta opção tem a seguinte estrutura:

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

2. Método -O: Aqui você não precisa adicionar um nome de arquivo, pois esta opção permite salvar o arquivo com o nome da URL. Para usar esta opção, basta prefixar a URL com -O.

Retomando o download

Pode acontecer de seu download parar no meio. Nesse caso, reescreva o comando adicionando a opção -C no início:

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

Por que o curl é tão popular?

O Curl é realmente o ‘canivete suíço’ dos comandos, criado para operações complexas. No entanto, existem alternativas, como ‘wget’ ou ‘Kurly’, que são boas para tarefas mais simples.

O Curl é um favorito entre os desenvolvedores porque está disponível para quase todas as plataformas. Às vezes, ele é até instalado por padrão. Isso significa que, independentemente dos programas/tarefas que você esteja executando, os comandos curl devem funcionar.

Além disso, é provável que, se o seu sistema operacional tiver menos de uma década, você já tenha o curl instalado. Você também pode ler a documentação em um navegador e verificar a documentação do curl. Se você estiver usando uma versão recente do Windows, provavelmente já tem o curl instalado. Se não tiver, confira esta publicação no Stack Overflow para saber mais sobre como fazer isso.

Usando cURL com Proxies

Algumas pessoas podem preferir usar o cURL em conjunto com um Proxy. Os benefícios incluem:

  1. Aumentar a capacidade de gerenciar com sucesso solicitações de dados de diferentes geolocalizações.
  2. Multiplicar exponencialmente o número de tarefas de dados simultâneas que podem ser executadas ao mesmo tempo. 

Para isso, você pode usar as capacidades ‘-x’ e ‘(- – proxy)’ já integradas ao cURL. Aqui está um exemplo da linha de comando que você pode usar para integrar o Proxy que está usando com o cURL:

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

No trecho de código acima, ‘6666’ é um espaço reservado para o número da porta, enquanto ‘026.930.77.2’ é o endereço IP. 

Bom saber: O cURL é compatível com a maioria dos tipos comuns de Proxy atualmente em uso, incluindo HTTP, HTTPS e SOCKS.

Como alterar o User-Agent

User-Agents são características que permitem que os sites de destino identifiquem o dispositivo que está solicitando informações. Um site de destino pode exigir que os solicitantes atendam a certos critérios antes de retornar os dados desejados. Isso pode estar relacionado ao tipo de dispositivo, sistema operacional ou navegador utilizado. Nesse cenário, as entidades que coletam dados precisarão emular o ‘candidato ideal’ do site de destino. 

Para fins de argumento, digamos que o site que você está acessando ‘prefere’ que as partes solicitantes usem o Chrome como navegador. Para obter o conjunto de dados desejado usando o cURL, será necessário emular essa ‘característica do navegador’ da seguinte forma: 

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

Scraping de Dados com cURL

Dica profissional: Certifique-se de respeitar as regras de um site e, em geral, não tente acessar conteúdo protegido por senha, o que é ilegal na maioria dos casos ou, no mínimo, mal visto.

Você pode usar o curl para automatizar o processo repetitivo no scraping de dados, ajudando a evitar tarefas tediosas. Para isso, você precisará usar PHP. Aqui está um exemplo que encontramos no 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/');

?>

Ao usar o curl para fazer scraping de uma página, há três opções que você deve usar:

  • Inicializa a sessão
curl_init($url)
  • Executa a sessão
curl_exec()
  • Encerra a sessão
curl_close()

Outras opções que você deve usar incluem:

  • Define a URL que você deseja fazer scraping
CURLOPT_URL
  • Instrui o curl a salvar a página com scraping como uma variável. (Isso permite obter exatamente o que você queria extrair da página.)
CURLOPT_RETURNTRANSFER

Conclusão

Embora o cURL seja uma poderosa ferramenta de scraping de dados, ele exige que as empresas dediquem tempo valioso de desenvolvimento tanto na coleta quanto na limpeza de dados. É aí que entra a Bright Data. A Bright Data, a infraestrutura de dados web nº 1 do mundo, tem uma ampla gama de produtos para auxiliar nas necessidades de scraping de dados. Os produtos da Bright Data incluem as APIs de Web Scraper desenvolvidas com foco nos desenvolvedores, um navegador de scraping automatizado com automação de desbloqueio de sites integrada, um marketplace de conjuntos de dados para quem prefere receber dados precisos em vez de fazer scraping, e 400M+ monthly Proxies confiáveis.