Импортировать данные из URL, используя Python (в pandas dataframe)? - PullRequest
0 голосов
/ 07 апреля 2020

Я ходил кругами на этом. Немного расстраивает, поскольку решение, вероятно, уже близко.

В любом случае, я нашел URL, который возвращает некоторые данные в формате CSV. Однако сам URL не содержит имя файла CSV. В веб-браузере я легко могу go перейти по ссылке, и их спрашивают, хочу ли я открыть или сохранить файл. Итак, в конце концов я знаю, что я получаю CSV-файл с именем. Я просто не уверен, как выполнить задачу в python, поскольку, кажется, передается некоторый промежуточный тип данных (в байтах)

Я пробовал следующее безрезультатно:

import urllib
import io
import pandas as pd
link = r'http://www.cboe.com/products/vix-index-volatility/vix-options-and-futures/vix-index/vix-historical-data/'
f = urllib.request.urlopen(link)
myfile = f.read()
buf = io.BytesIO(myfile)  # originally tried io.StringIO(myfile) but then realized myfile is in bytes
df = pd.read_csv(buf)

Есть предложения?

В df должны содержаться данные, которые выглядят примерно так:

1/5 / 2004,18.45,18.49,17.44,17.49 1/6 / 2004,17.66, 17.67,16.19,16.73 1/7/2004 / 16,72,16,75,15,5,15,5 1/8 / 2004,15.42,15.68,15.32,15.61 1/9 / 2004,16.15,16.88,15.57,16.75 1/12/2004, 17.32,17.46,16.79,16.82

Последняя строка сообщения об ошибке:

ParserError: Ошибка токенизации данных. C ошибка: ожидается 2 поля в строке 24, пила 4

1 Ответ

0 голосов
/ 07 апреля 2020

@ Фред - я думаю, что вы просто используете неправильный URL. Когда я заменяю ссылку на http://www.cboe.com/publish/scheduledtask/mktdata/datahouse/vixcurrent.csv, ваш скрипт работает.

Я нашел этот URL на странице, на которую изначально указывал ваш скрипт.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...