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