Baixe um arquivo em Python

Siddharth Swami 30 janeiro 2023
  1. Use o módulo requests para baixar arquivos em Python
  2. Use o módulo urllib para baixar arquivos em Python
  3. Use o módulo pycurl para baixar arquivos em Python
Baixe um arquivo em Python

Python é usado com muita frequência para acessar recursos na Internet. Podemos gerar solicitações e conexões usando diferentes bibliotecas. Essas bibliotecas também podem nos ajudar a baixar ou ler arquivos HTTP da web.

Neste tutorial, vamos baixar arquivos da internet em Python.

Use o módulo requests para baixar arquivos em Python

Podemos usar o módulo requests para recuperar informações e ler páginas da web da Internet.

O método get() ajuda a recuperar o caminho do arquivo da URL fornecida, a partir da qual o arquivo deve ser baixado. O método open() cria um objeto de arquivo onde desejamos salvar o arquivo, e então a função write() é usada para escrever o conteúdo do arquivo no caminho desejado.

Usamos essas funções para baixar um arquivo, conforme mostrado a seguir.

import requests as req

URL = "https://www.facebook.com/favicon.ico"
file = req.get(url, allow_redirects=True)

open("facebook.ico", "wb").write(file.content)

Produção:

1150

O código acima baixa um arquivo de logotipo do Facebook de sua URL e o armazena no diretório de trabalho. Podemos especificar qualquer caminho na função open(), mas temos que abri-lo no modo wb. Isso indica que pretendemos escrever um arquivo em modo binário.

O exemplo acima é adequado para baixar arquivos menores, mas não funciona de forma eficiente para arquivos grandes. A função file.content é usada para obter o conteúdo do arquivo como uma única string. Como usamos um pequeno arquivo no exemplo acima, ele funcionou corretamente.

Se tivermos que baixar um arquivo grande, devemos usar a função file.iter_content() na qual especificaremos o tamanho do bloco. Ele baixa os dados na forma de blocos.

Usamos essa função no exemplo a seguir.

import requests

URL = "http://codex.cs.yale.edu/avi/db-book/db4/slide-dir/ch1-2.pdf"

file = requests.get(URL, stream=True)

with open("Python.pdf", "wb") as pdf:
    for chunk in file.iter_content(chunk_size=1024):

        if chunk:
            pdf.write(chunk)

Use o módulo urllib para baixar arquivos em Python

Também podemos usar a biblioteca urllib em Python para baixar e ler arquivos da web. Este é um módulo de tratamento de URL que possui diferentes funções para realizar a tarefa dada.

Aqui também, temos que especificar a URL do arquivo a ser baixado. O método urllib.request.urlopen() obtém o caminho do arquivo e envia uma solicitação ao servidor onde o arquivo está sendo baixado.

Para baixar arquivos, podemos usar a função urllib.request.urlretrieve(). Ele irá baixar o recurso do endereço fornecido e armazená-lo no diretório fornecido.

Baixamos o ícone do Facebook usando este método no exemplo a seguir.

import urllib

urllib.request.urlretrieve("https://www.facebook.com/favicon.ico", "fb.ico")

Produção:

('fb.ico', <http.client.HTTPMessage at 0x2d2d317a088>)

A saída acima indica que o arquivo foi baixado com sucesso.

Use o módulo pycurl para baixar arquivos em Python

Podemos usar o manuseio de arquivos com este módulo para baixar arquivos da Internet. Primeiro, temos que criar um objeto de arquivo para o qual desejamos fazer o download do arquivo necessário. Então, usaremos a função pycurl.Curl() para criar um objeto e iniciar a sessão curl.

O método setopt() é usado para definir o valor de URL do arquivo. Em seguida, a função perform() executa o processo de transferência de arquivos do servidor enviando a solicitação HTTP. A seguir, escreveremos os dados recuperados no arquivo usando o objeto de arquivo. Finalmente, o método close() fecha a sessão e obtemos nosso arquivo baixado no diretório de trabalho.

Veja o código abaixo.

import pycurl

file_name = "fb.ico"
file_src = "https://www.facebook.com/favicon.ico"

with open(file_name, "wb") as f:
    cl = pycurl.Curl()
    cl.setopt(cl.URL, file_src)
    cl.setopt(cl.WRITEDATA, f)
    cl.perform()
    cl.close()