Baixando dados com curl

Processamento de Dados no Shell

Susan Sun

Data Person

O que é o curl?

curl:

  • é abreviação de Client for URLs
  • é uma ferramenta de linha de comando Unix
  • transfere dados para e de um servidor
  • é usado para baixar dados de sites HTTP(S) e servidores FTP
Processamento de Dados no Shell

Verificando a instalação do curl

Verificar a instalação do curl:

man curl

Se o curl não estiver instalado, você verá:

curl command not found.

Para instruções completas, veja https://curl.haxx.se/download.html.

Processamento de Dados no Shell

Navegando no manual do curl

Se o curl estiver instalado, seu console ficará assim:

Captura de tela do início do manual do curl como se impresso em um Terminal escuro

Processamento de Dados no Shell

Navegando no manual do curl

Pressione Enter para rolar.

Captura de tela de um manual do curl parcialmente rolado como se impresso em um Terminal escuro

Pressione q para sair.

Processamento de Dados no Shell

Aprendendo a sintaxe do curl

Sintaxe básica do curl:

curl [option flags] [URL]

URL é obrigatório.

curl também suporta HTTP, HTTPS, FTP e SFTP.

Para ver a lista completa de opções:

curl --help
Processamento de Dados no Shell

Baixando um único arquivo

Exemplo:

Um único arquivo está em:

https://websitename.com/datafilename.txt

Use a flag opcional -O para salvar o arquivo com o nome original:

curl -O https://websitename.com/datafilename.txt

Para renomear, use -o (minúsculo) + novo nome:

curl -o renameddatafilename.txt https://websitename.com/datafilename.txt
Processamento de Dados no Shell

Baixando vários arquivos com curingas

Muitas vezes, um servidor hospeda vários arquivos de dados com nomes parecidos:

https://websitename.com/datafilename001.txt
https://websitename.com/datafilename002.txt
...
https://websitename.com/datafilename100.txt

Usando curingas (*)

Baixe todo arquivo em https://websitename.com/ que começa com datafilename e termina em .txt:

curl -O https://websitename.com/datafilename*.txt
Processamento de Dados no Shell

Baixando vários arquivos com Globbing Parser

Continuando o exemplo anterior:

https://websitename.com/datafilename001.txt
https://websitename.com/datafilename002.txt
...
https://websitename.com/datafilename100.txt

Usando Globbing Parser

O comando abaixo baixa todos os arquivos sequencialmente de datafilename001.txt até datafilename100.txt.

curl -O https://websitename.com/datafilename[001-100].txt
Processamento de Dados no Shell

Baixando vários arquivos com Globbing Parser

Continuando o exemplo anterior:

https://websitename.com/datafilename001.txt
https://websitename.com/datafilename002.txt
...
https://websitename.com/datafilename100.txt

Usando Globbing Parser

Percorra os arquivos e baixe a cada N arquivos (ex.: datafilename010.txt, datafilename020.txt, ... datafilename100.txt)

curl -O https://websitename.com/datafilename[001-100:10].txt
Processamento de Dados no Shell

Soluções preventivas

curl tem duas flags bem úteis em caso de timeouts durante o download:

  • -L Redireciona a URL HTTP se ocorrer um erro 300.

  • -C Retoma uma transferência anterior se expirar antes de concluir.

Juntando tudo:

curl -L -O -C https://websitename.com/datafilename[001-100].txt
  • Todas as flags vêm antes da URL
  • A ordem não importa (ex.: -L -C -O funciona)
Processamento de Dados no Shell

Bom curl!

Processamento de Dados no Shell

Preparing Video For Download...