как скачивать файлы с яндекс диска

есть файл: https://yadi.sk/d/xsjJ3dEqb4pvlQ (он открыт) как мне его скачать? не нужна авторизация и т.п.


Ответы (3 шт):

Автор решения: Xander

Вот код для скачивания опубликованного файла. (Ваша ссылка почему-то нерабочая, я для примера вставил свою ссылку. Замените её на свою рабочую, когда она у вас будет)

import requests
from urllib.parse import urlencode

base_url = 'https://cloud-api.yandex.net/v1/disk/public/resources/download?'
public_key = 'https://yadi.sk/d/UJ8VMK2Y6bJH7A'  # Сюда вписываете вашу ссылку

# Получаем загрузочную ссылку
final_url = base_url + urlencode(dict(public_key=public_key))
response = requests.get(final_url)
download_url = response.json()['href']

# Загружаем файл и сохраняем его
download_response = requests.get(download_url)
with open('downloaded_file.txt', 'wb') as f:   # Здесь укажите нужный путь к файлу
    f.write(download_response.content)
→ Ссылка
Автор решения: mr.polden2010

Загрузка .csv в DataFrame Pandas с Яндекс диска без авторизации, при наличии публичных ссылок на папку и файл

Библиотеки:

import pandas as pd
import requests
import urllib
import json

Публичные ссылки(на файл и папку можно скопировать при публикации):

folder_url = 'https://yadi.sk/d/my_folder_hash'
file_url = 'file.csv'
url = 'https://cloud-api.yandex.net/v1/disk/public/resources/download' + '?public_key=' + urllib.parse.quote(folder_url) + '&path=/' + urllib.parse.quote(file_url)

Подготовка ссылки на скачивание:

r = requests.get(url) # запрос ссылки на скачивание
h = json.loads(r.text)['href'] # 'парсинг' ссылки на скачивание

Загрузка данных в DataFrame:

df = pd.read_csv(h, sep=';', error_bad_lines=False, comment='#' , encoding='cp1251')

Нужно понимать корректный разделитель и кодировку, у меня это sep=';' и encoding='cp1251'.

→ Ссылка
Автор решения: Alex N

Немного поменял вариант от @Xander. Mожно не сохранять каждый раз файл на диске, а просто прочитать его через виртуальный файл с io.

Вот вот мой вариант с эксель таблицей:

import requests
from urllib.parse import urlencode
import pandas as pd
import io

base_url = 'https://cloud-api.yandex.net/v1/disk/public/resources/download?'
public_key = 'https://disk.yandex.ru/i/....' # Сюда вписываете вашу ссылку

# Получаем загрузочную ссылку
final_url = base_url + urlencode(dict(public_key=public_key))
response = requests.get(final_url)
download_url = response.json()['href']

# Загружаем файл и читаем в датафрейм
download_response = requests.get(download_url)
df = pd.read_excel(io.BytesIO(download_response.content), engine='openpyxl')
df.head(3)
→ Ссылка