使用pandas读取谷歌金融数据报URLError getaddrinfo failed错误
报错原因
URLError: <urlopen error [Errno 11001] getaddrinfo failed>是DNS解析失败报错,触发原因有两个:
- 你用的谷歌金融CSV直链早就失效了,谷歌金融很多年前就关闭了公开无验证直接导出CSV的接口,根本没法通过这个链接拿到数据;如果本地网络本身无法正常访问谷歌服务、解析不了对应域名,会直接触发这个地址解析错误。
- 代码里还有个拼写bug,bokeh创建画布的参数是全小写的
height,你写成了大写开头的Height,就算数据读取成功,这行也会报参数不识别的错误。
修复方法
- 先替换失效数据源:别再用那个旧的谷歌直链了,先从你能正常访问的金融数据站点,下载2009年1月1日到2012年8月2日纳斯达克上市代码ADBE(Adobe)的行情数据,存成本地CSV文件,保证文件里包含
Date(日期)、Close(收盘价)两个字段即可。 - 把代码里
pd.read_csv()的入参改成本地CSV的实际存放路径,再把Height的拼写修正为全小写的height。
修正后的参考代码
# 时间序列图绘制 from bokeh.plotting import figure from bokeh.io import output_file, show import pandas as pd # 读取本地存储的行情CSV,替换成你自己的文件实际存放路径 Data_04 = pd.read_csv("ADBE_20090101_20120802.csv", parse_dates=["Date"]) # 配置输出的html文件路径 output_file(r"C:\Users\hsr4ban\Learning_Python_Jupyter\Jupyter_PracticeNotebooks\05_BokehPlots\20220708_04_Bokeh_GoogleData.html") # 创建画布,注意height参数为全小写 Fig_04 = figure(width=500, height=500, x_axis_type="datetime") # 绘制收盘价折线 Fig_04.line(Data_04["Date"], Data_04["Close"], color="Orange", alpha=0.5) # 展示图表 show(Fig_04)
如果需要自动拉取数据、不用手动下载CSV,可以用akshare、yfinance这类封装好的金融数据工具库,不需要自己写请求逻辑解析页面,根据自身网络环境选择能正常连通的数据源即可。
内容的提问来源于stack exchange,提问作者RanjanN
相关产品推荐
相关产品推荐

