【发布时间】:2020-07-19 02:45:17
【问题描述】:
我在这个问题上转了一圈。有点令人沮丧,因为解决方案可能就在眼前。
无论如何,我找到了一个以 CSV 格式返回一些数据的 URL。但是,URL 本身不包含 csv 文件名。在网络浏览器中,我可以轻松访问链接,并询问我是否要打开或保存文件。所以,最终我知道我得到了一个带有名称的 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
【问题讨论】:
-
不是csv文件的url
http://www.cboe.com/publish/scheduledtask/mktdata/datahouse/vixcurrent.csv我在浏览器和终端中打开了你代码中的链接,它是一个标准网页。 -
@EricTruett 你是对的。检查网页时可以找到实际链接。