with requests link images from python file download save

requests - ¿Descarga básica de archivos http y guardado en disco en python?



python requests download file (6)

Como se menciona here :

import urllib urllib.urlretrieve ("http://randomsite.com/file.gz", "file.gz")

EDIT: Si aún desea usar las solicitudes, eche un vistazo a esta pregunta o esta .

Soy nuevo en Python y he estado revisando las preguntas y respuestas en este sitio para obtener una respuesta a mi pregunta. Sin embargo, soy un principiante y me resulta difícil entender algunas de las soluciones. Necesito una solución muy básica.

¿Podría alguien explicarme una solución simple para ''Descargar un archivo a través de http'' y ''Guardarlo en un disco, en Windows'' para mí?

No estoy seguro de cómo usar los módulos shutil y os, tampoco.

El archivo que deseo descargar tiene menos de 500 MB y es un archivo de almacenamiento .gz. Si alguien puede explicar cómo extraer el archivo y utilizar los archivos también, ¡sería genial!

Aquí hay una solución parcial, que escribí a partir de varias respuestas combinadas:

import requests import os import shutil global dump def download_file(): global dump url = "http://randomsite.com/file.gz" file = requests.get(url, stream=True) dump = file.raw def save_file(): global dump location = os.path.abspath("D:/folder/file.gz") with open("file.gz", ''wb'') as location: shutil.copyfileobj(dump, location) del dump

¿Podría alguien señalar los errores (nivel de principiante) y explicar los métodos más fáciles para hacer esto?

¡Gracias!


Cuatro métodos que usan wget, urllib y solicitud.

#!/usr/bin/python import requests from StringIO import StringIO from PIL import Image import profile as profile import urllib import wget url = ''https://tinypng.com/images/social/website.jpg'' def testRequest(): image_name = ''test1.jpg'' r = requests.get(url, stream=True) with open(image_name, ''wb'') as f: for chunk in r.iter_content(): f.write(chunk) def testRequest2(): image_name = ''test2.jpg'' r = requests.get(url) i = Image.open(StringIO(r.content)) i.save(image_name) def testUrllib(): image_name = ''test3.jpg'' testfile = urllib.URLopener() testfile.retrieve(url, image_name) def testwget(): image_name = ''test4.jpg'' wget.download(url, image_name) if __name__ == ''__main__'': profile.run(''testRequest()'') profile.run(''testRequest2()'') profile.run(''testUrllib()'') profile.run(''testwget()'')

testRequest - 4469882 llamadas a funciones (4469842 llamadas primitivas) en 20.236 segundos

testRequest2 - llamadas a la función 8580 (8574 llamadas primitivas) en 0.072 segundos

testUrllib - Llamadas a función 3810 (3775 llamadas primitivas) en 0.036 segundos

testwget - La función 3489 llama en 0.020 segundos


Otra forma limpia de guardar el archivo es esta:

import csv import urllib urllib.retrieve("your url goes here" , "output.csv")


Solución exótica de Windows

import subprocess subprocess.run("powershell Invoke-WebRequest {} -OutFile {}".format(your_url, filename), shell=True)


Una forma limpia de descargar un archivo es:

import urllib testfile = urllib.URLopener() testfile.retrieve("http://randomsite.com/file.gz", "file.gz")

Esto descarga un archivo de un sitio web y lo nombra file.gz Esta es una de mis soluciones favoritas, desde descargar una imagen a través de urllib y python .

Este ejemplo usa la biblioteca urllib y recuperará directamente el archivo de una fuente.


Yo uso wget .

¿Una biblioteca simple y buena si quieres dar un ejemplo?

import wget file_url = ''http://johndoe.com/download.zip'' file_name = wget.download(file_url)

wget module support python 2 y python 3 versiones