Baixe um arquivo em Python
- 
          
            Use o módulo requestspara baixar arquivos em Python
- 
          
            Use o módulo urllibpara baixar arquivos em Python
- 
          
            Use o módulo pycurlpara baixar arquivos 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()