使用Python从URL导入数据(导入数据帧)?

使用Python从URL导入数据(导入数据帧)?,python,pandas,url,Python,Pandas,Url,我在这件事上绕了一圈。有点令人沮丧,因为解决方案可能就在眼前 无论如何,我发现了一个URL,它以CSV格式返回一些数据。但是,URL本身不包含csv文件名。在web浏览器中,我可以很容易地转到链接,并询问我是否要打开或保存文件。所以,最终我知道我得到了一个名为csv的文件。我只是不确定如何在python中执行任务,因为似乎传递了一些中间数据类型(字节) 我尝试了以下方法,但没有效果: import urllib import io import pandas as pd link = r'htt

我在这件事上绕了一圈。有点令人沮丧,因为解决方案可能就在眼前

无论如何,我发现了一个URL,它以CSV格式返回一些数据。但是,URL本身不包含csv文件名。在web浏览器中,我可以很容易地转到链接,并询问我是否要打开或保存文件。所以,最终我知道我得到了一个名为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错误:第24行应该有2个字段,看到了4个Fred-我认为您只是使用了错误的URL。当我将链接替换为时,您的脚本工作正常


我在您的脚本最初指向的页面上找到了此URL

这并不是一个真正的答案,但仅仅通知CBOE的链接目前无效(从2020-2007年12月到今天2020-23年12月),不确定url是否会返回。datahub.io中也有类似的格式,但它不是最新的,CHRIS通过Quandl提供的免费数据也不是最新的。我还没有找到来自CBOE的官方通知,说明这个url将不再受支持。在quantconnect中发布了类似的问题/发现

以上来自CBOE的url似乎不再有效

过期数据可从datahub.io和quandl获取:

url = 'https://datahub.io/zelima1/finance-vix/r/vix-daily.csv'
df = pd.read_csv(url)
print(df.shape)
print(df.Date)
Quandl CHRIS VIX:

https://www.quandl.com/data/CHRIS/CBOE_VX1-S-P-500-Volatility-Index-VIX-Futures-Continuous-Contract-1-VX1-Front-Month

csv文件的url不是
http://www.cboe.com/publish/scheduledtask/mktdata/datahouse/vixcurrent.csv
我在浏览器和终端中打开了您代码中的链接,这是一个标准网页。@EricTruett您是对的。查看网页时可以找到实际链接。
url = 'https://datahub.io/zelima1/finance-vix/r/vix-daily.csv'
df = pd.read_csv(url)
print(df.shape)
print(df.Date)
(3488, 5)
(3488, 5)
0       2004-01-02
1       2004-01-05
2       2004-01-06
3       2004-01-07
4       2004-01-08
           ...    
3483    2017-11-01
3484    2017-11-02
3485    2017-11-03
3486    2017-11-06
3487    2017-11-07
Name: Date, Length: 3488, dtype: object
https://www.quandl.com/data/CHRIS/CBOE_VX1-S-P-500-Volatility-Index-VIX-Futures-Continuous-Contract-1-VX1-Front-Month