Яндекс.Диск официально не предоставляет сервис прямого считывания файлов по прямой ссылке.
Публичная ссылка на файл открывается в окне браузера. И уже в этом окне есть ссылка для скачивания.
Но в задачах анализа данных бывает необходимо в тетрадке Юпитер.Ноутбука прямо считывать данные в переменную из облачного хранилища.
Самый популярный в РФ ресурс для хранения файлов сейчас – это Яндекс.Диск.
Вот пример кода на Python для чтения файла:
import pandas as pd import requests from urllib.parse import urlencode # используем api base_url = 'https://cloud-api.yandex.net/v1/disk/public/resources/download?' public_key = 'https://disk.yandex.ru/d/c_JZSSJSnqWYzA' # получаем url final_url = base_url + urlencode(dict(public_key=public_key)) response = requests.get(final_url) download_url = response.json()['href'] # загружаем файл в df download_response = requests.get(download_url) df = pd.read_csv(download_url, sep='\t')
Конечно же, может потребоваться подбор кодовой страницы файла и разделителя.
Ну это как для любого файла csv .
Эдуард, добрый вечер. Подскажите, почему возникает ошибка ‘href’ и как с ней бороться?
“`
import requests
from urllib.parse import urlencode
def get_url_ydx_disc(public_key):
base_url = ‘https://cloud-api.yandex.net/v1/disk/public/resources/download?’
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)
return download_url
olist_customers_datase_public_key = ‘https://disk.yandex.ru/d/QXrVDUoQvFhIcg’
get_url_ydx_disc(olist_customers_datase_public_key)
“`
—————————————————————————
KeyError Traceback (most recent call last)
in
—-> 1 get_url_ydx_disc(olist_customers_datase_public_key)
in get_url_ydx_disc(public_key)
3 final_url = base_url + urlencode(dict(public_key=public_key))
4 response = requests.get(final_url)
—-> 5 download_url = response.json()[‘href’]
6 download_response = requests.get(download_url)
7 return download_url
KeyError: ‘href’
Анатолий, добрый день!
Я не пользуюсь сейчас этим методом, потому что пока что на вошёл в эту новую для меня сферу деятельности на уровне сотрудника любого уровня.
Простите, ничем не могу пока что помочь.
Вы не определили переменную public_key посмотрите, можети из-за этого.