Saltar al contenido

Python: descargue archivos de google drive usando url

Solución:

Si por “URL de la unidad” te refieres a enlace para compartir de un archivo en Google Drive, lo siguiente podría ayudar:

import requests

def download_file_from_google_drive(id, destination):
    URL = "https://docs.google.com/uc?export=download"

    session = requests.Session()

    response = session.get(URL, params = { 'id' : id }, stream = True)
    token = get_confirm_token(response)

    if token:
        params = { 'id' : id, 'confirm' : token }
        response = session.get(URL, params = params, stream = True)

    save_response_content(response, destination)    

def get_confirm_token(response):
    for key, value in response.cookies.items():
        if key.startswith('download_warning'):
            return value

    return None

def save_response_content(response, destination):
    CHUNK_SIZE = 32768

    with open(destination, "wb") as f:
        for chunk in response.iter_content(CHUNK_SIZE):
            if chunk: # filter out keep-alive new chunks
                f.write(chunk)

if __name__ == "__main__":
    file_id = 'TAKE ID FROM SHAREABLE LINK'
    destination = 'DESTINATION FILE ON YOUR DISK'
    download_file_from_google_drive(file_id, destination)

El recortado no usa pydrive, ni el SDK de Google Drive. Utiliza el módulo de solicitudes (que es, de alguna manera, una alternativa a urllib2).

Al descargar archivos grandes de Google Drive, una sola solicitud GET no es suficiente. Se necesita un segundo: consulte el archivo grande wget / curl de Google Drive.

Habiendo tenido necesidades similares muchas veces, hice una clase extra simple GoogleDriveDownloader comenzando en el fragmento de @ user115202 anterior. Puede encontrar el código fuente aquí.

También puede instalarlo a través de pip:

pip install googledrivedownloader

Entonces el uso es tan simple como:

from google_drive_downloader import GoogleDriveDownloader as gdd

gdd.download_file_from_google_drive(file_id='1iytA1n2z4go3uVCwE__vIKouTKyIDjEq',
                                    dest_path="./data/mnist.zip",
                                    unzip=True)

Este fragmento descargará un archivo compartido en Google Drive. En este caso 1iytA1n2z4go3uVCwE__vIKouTKyIDjEq es el ID del enlace para compartir obtenido de Google Drive.

Recomiendo el paquete gdown:

import gdown

url="https://drive.google.com/uc?id=0B9P1L--7Wd2vU3VUVlFnbTgtS2c"
output="spam.txt"
gdown.download(url, output, quiet=False) 
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *