"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como baixar um arquivo de um URL armazenado como string em Python 3?

Como baixar um arquivo de um URL armazenado como string em Python 3?

Publicado em 2024-11-20
Navegar:548

How to Download a File from a URL Stored as a String in Python 3?

Como fazer download de um arquivo da Web em Python 3 com uma URL armazenada em uma string

Ao tentar baixar um arquivo de um servidor web em Python 3, passar uma string como URL pode resultar em um erro ao exigir a entrada de bytes. Este artigo apresenta vários métodos para contornar esse problema e recuperar o arquivo com êxito.

Usando urllib.request.urlopen

Para obter o conteúdo de uma página da web, utilize urllib .request.urlopen(). Esta função retorna um objeto de resposta, que pode então ser lido em uma variável:

import urllib.request

url = 'http://example.com/'
response = urllib.request.urlopen(url)
data = response.read()  # a `bytes` object

Usando urlib.request.urlretrieve

A maneira mais direta de baixar e salvar um arquivo é utilizar a função urllib.request.urlretrieve:

import urllib.request

url = 'http://example.com/file.txt'
urllib.request.urlretrieve(url, 'file.txt')

Este método baixa o arquivo do URL especificado e o salva localmente como 'file.txt'.

Usando urlib.request.urlopen com shutil.copyfileobj

Para maior controle sobre o processo de download, use urllib.request.urlopen() para retornar um objeto semelhante a um arquivo. Este objeto pode então ser copiado para um arquivo real usando shutil.copyfileobj():

import urllib.request
import shutil

url = 'http://example.com/file.zip'
with urllib.request.urlopen(url) as response, open('file.zip', 'wb') as out_file:
    shutil.copyfileobj(response, out_file)

Armazenando o download como bytes

Se a velocidade for uma prioridade, os dados baixados podem ser armazenados diretamente em um objeto bytes e posteriormente gravado em um arquivo, embora isso seja adequado apenas para arquivos pequenos:

import urllib.request

url = 'http://example.com/icon.png'
with urllib.request.urlopen(url) as response, open('icon.png', 'wb') as out_file:
    data = response.read() # a `bytes` object
    out_file.write(data)

Handling Compressed Files

urllib.request.urlopen() também pode ser usado para lidar com arquivos compactados, desde que o servidor suporte acesso aleatório:

import urllib.request
import gzip

url = 'http://example.com/archive.gz'
with urllib.request.urlopen(url) as response:
    with gzip.GzipFile(fileobj=response) as uncompressed:
        file_header = uncompressed.read(64) # a `bytes` object

Ao implementar um desses métodos, os desenvolvedores podem baixar arquivos da web com sucesso em Python 3, mesmo quando o URL é armazenado como uma string.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3