Baixe um arquivo em Python
-
Use o módulo
requests
para baixar arquivos em Python -
Use o módulo
urllib
para baixar arquivos em Python -
Use o módulo
pycurl
para baixar arquivos em Python
![Baixe um arquivo em Python](/img/Python/feature-image---download-a-file-in-python.webp)
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()