Eu sei o URL de uma imagem na Internet.
por exemplo , http://www.digimouth.com/news/media/2011/09/google-logo.jpg , que contém o logotipo do Google.
Agora, como posso baixar essa imagem usando o Python sem abrir o URL em um navegador e salvar o arquivo manualmente.
python
web-scraping
Pankaj Vatsa
fonte
fonte
Respostas:
Python 2
Aqui está uma maneira mais direta, se tudo o que você quer fazer é salvá-lo como um arquivo:
O segundo argumento é o caminho local em que o arquivo deve ser salvo.
Python 3
Como o SergO sugeriu, o código abaixo deve funcionar com o Python 3.
fonte
filename = link.split('/')[-1]
import urllib.request
eurllib.request.urlretrieve()
, consequentemente.file01.jpg
conterá sua imagem.fonte
open("file01.jpg", "wb")
caso contrário, poderá corromper a imagem.urllib.urlretrieve
pode salvar a imagem diretamente.Eu escrevi um script que faz exatamente isso , e está disponível no meu github para seu uso.
Utilizei o BeautifulSoup para analisar qualquer site em busca de imagens. Se você fará muito scraping na web (ou pretende usar minha ferramenta), sugiro
sudo pip install BeautifulSoup
. Informações sobre o BeautifulSoup estão disponíveis aqui .Por conveniência, aqui está o meu código:
fonte
Isso pode ser feito com solicitações. Carregue a página e despeje o conteúdo binário em um arquivo.
fonte
Python 3
urllib.request - Biblioteca extensível para abrir URLs
fonte
Uma solução que funciona com Python 2 e Python 3:
ou, se o requisito adicional de
requests
for aceitável e se for um URL http (s):fonte
Eu criei um script expandindo o script de Yup. Eu consertei algumas coisas. Agora ele ignorará 403: Problemas proibidos. Não falha quando uma imagem falha ao ser recuperada. Ele tenta evitar visualizações corrompidas. Ele obtém os URLs absolutos certos. Dá mais informações. Pode ser executado com um argumento na linha de comando.
fonte
Usando biblioteca de pedidos
fonte
Esta é uma resposta muito curta.
fonte
Versão para Python 3
Eu ajustei o código de @madprops para Python 3
fonte
Algo novo para o Python 3 usando Solicitações:
Comentários no código. Pronto para usar a função.
fonte
Resposta tardia, mas para
python>=3.6
você pode usar o dload , ou seja:se você precisar da imagem como
bytes
, use:instale usando
pip3 install dload
fonte
fonte
TypeError: a bytes-like object is required, not 'Response'
. Deve ser #handler.write(img_data.content)
handler.write(img_data.read())
.