cURL: O que é, e como se pode usar para raspar a web

O cURL é um comando versátil utilizado pelos programadores para a coleta e transferência de dados. Mas como se pode aproveitar o cURL para a raspagem da web? Este artigo irá ajudá-lo a começar.
7 min read
data collection and web scraping with cURL

Nesta publicação do blogue irá aprender:

O que é o cURL?

cURL é uma ferramenta de linha de comando que pode utilizar para transferir dados através de protocolos de rede. O nome cURL significa ‘client URL’, e também é escrito como ‘curl’. Este popular comando utiliza a sintaxe URL para transferir dados de e para os servidores. Curl é alimentado por ‘libcurl’, uma biblioteca de transferência de URLs do lado do cliente gratuita e fácil de usar.

Porque é que a utilização do curl é vantajosa?

A versatilidade deste comando significa que se pode utilizar curl para uma variedade de casos de utilização, incluindo:

  • Autenticação do usuário
  • Mensagens HTTP
  • Ligações SSL
  • Suporte de proxy
  • Carregamentos FTP

O ‘caso de uso’ mais simples para o curl seria o download e carregamento de sítios web inteiros utilizando um dos protocolos suportados.

Protocolos de Curl

Embora o Curl tenha uma longa lista de protocolos suportados, utilizará HTTP por defeito se não fornecer um protocolo específico. Aqui está a lista de protocolos suportados:

DICTFILEFTP
FTPSGOPHERHTTP
HTTPSIMAPIMAPS
LDAPPOP3RTMP
RTSPSCPSFTP
SMBSMBSTELNET
TFTP

Instalar curl

O comando curl é instalado por defeito nas distribuições Linux.

Como se verifica se já tem o curl instalado?

1. Abra a sua consola Linux

2. Digite ‘curl’, e prima ‘enter’.

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

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

4. Se ainda não tiver o curl instalado, verá a seguinte mensagem: ‘comando não encontrado’. Pode então recorrer ao seu pacote de distribuição e instalá-lo (mais detalhes abaixo).

Como usar o cURL

A sintaxe do Curl é bastante simples:

curl [options] [url]

Por exemplo, se quiser download uma página web: webpage.com apenas execute:

curl www.webpage.com

O comando lhe dará então o código fonte da página na janela do seu terminal. Tenha em mente que se não especificar um protocolo, o curl usará por defeito HTTP. Abaixo pode encontrar um exemplo de como definir protocolos específicos:

curl ftp://webpage.com

caso se esquecer de adicionar o ://, curl adivinhará o protocolo que pretende utilizar.

Falamos brevemente sobre a utilização básica do comando, mas pode encontrar uma lista de opções no site de documentação de curl. As opções são as possíveis ações que pode realizar no URL. Quando escolhe uma opção, diz-lhe que ação tomar sobre o URL que listou. O URL diz ao cURL onde precisa de realizar esta ação. Depois o cURL permite-lhe listar um ou vários URLs.

Para download múltiplos URLs, prefixe cada URL com um -0 seguido de um espaço. Pode fazer isto numa única linha ou escrever uma linha diferente para cada URL. Também pode download parte de um URL, listando as páginas. Por exemplo:

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

Retomar a download

É possível guardar o conteúdo do URL num ficheiro utilizando dois métodos diferentes:

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

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

2. Método -O: Aqui não precisa de adicionar um nome de ficheiro, uma vez que esta opção permite-lhe guardar o ficheiro com o nome do URL. Para utilizar esta opção, basta prefixar o URL com -O.

Retomando o download

Pode acontecer que o seu download pare no meio. Neste caso, reescreva o comando adicionando a opção -C no início:

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

Porque é que o curl é tão popular?

Curl é realmente a “faca suíça” dos comandos, criada para operações complexas. No entanto, existem alternativas, por exemplo, ‘wget’ ou ‘Kurly’, que são boas para tarefas mais simples.

O Curl é um dos favoritos dos programadores porque está disponível para quase todas as plataformas. Por vezes até é instalado por defeito. Isto significa que, quaisquer que sejam os programas/tarefas que esteja a executar, os comandos curl devem funcionar.

Além disso, é provável que se o seu SO tiver menos de uma década de idade, terá o curl instalado. Você também pode ler os documentos num navegador, e verificar a documentação de curl. Se estiver a correr uma versão recente do Windows, é provável que já tenha instalado o curl. Se não é assim, consulte esta publicação no Stack Overflow para saber mais sobre como fazer isto.

Usando cURL com proxies  

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

  1. Aumentar a capacidade de gerir com êxito os pedidos de dados de diferentes localizações geográficas.  
  2. Aumentar exponencialmente o número de trabalhos de dados concorrentes que podem ser executados em simultâneo.

Para conseguir isso, você pode usar os recursos ‘-x’ e ‘(- – proxy)’ já incorporados 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: cUrl é compatível com a maioria dos tipos de proxy comuns 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 determinados critérios antes de retornar os dados de destino desejados. Isso pode estar relacionado a um tipo de dispositivo, sistema operacional ou navegador usado. Nesse cenário, as entidades que coletam dados desejarão emular o “candidato” ideal de seu site de destino.

Para fins de argumentação, digamos que o site que você está segmentando “prefere” que as partes solicitantes usem o Chrome como navegador. Para obter o conjunto de dados desejado usando cURL, será necessário emular esse ‘traço do navegador’ da seguinte maneira:

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

Raspagem da web com cURL

Dica profissional: Não se esquece de cumprir as regras de um sítio web e, em geral, não tente aceder a conteúdos protegidos por palavra-passe que sejam, na sua maioria, ilegais ou, pelo menos, desaprovados.

Pode utilizar curl para automatizar o processo repetitivo ao raspar a web, ajudando-o a evitar tarefas enfadonhas. Para isso, terá de utilizar PHP. Aqui está um exemplo que encontramos em 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/');

?>

Quando se usa o curl para raspar uma página web, existem três opções, que devem ser utilizadas:

  • curl_init($url) -> Inicializa a sessão
curl_init($url)
  • curl_exec() -> Executa
curl_exec()
  • curl_close() -> Fecha
curl_close()

Outras opções que deve utilizar incluem:

  • Curlopt_url -> Define o URL que deseja raspar
CURLOPT_URL
  • Curlopt_returntransfer -> Pede o curl para guardar a página raspada como uma variável. (Isto permite obter exatamente o que se pretende extrair da página).
CURLOPT_RETURNTRANSFER

Palavras finais

Embora o cURL seja uma poderosa ferramenta de raspagem da web, exige que as empresas utilizem tempo valioso dos programadores, tanto em termos de coleta como de limpeza de dados. A Bright Data lançou um raspador da web totalmente automatizado que funciona como uma solução sem código. Permite às empresas coletar dados de sítios web alvo com um simples clique num botão ou encomendar simplesmente o conjunto de dados pretendido. Isto liberta DevOps e outros membros da equipa técnica para se concentrarem no desenvolvimento de produtos e na resolução de problemas.  

Não tem certeza de qual produto escolher? Entre em contato com as vendas para encontrar a solução certa para você.