谷歌表格导入雅虎财经部分欧盟股票股息数据出现URL资源不存在错误
谷歌表格雅虎财经股息数据拉取异常问题解答
问题原因
- 页面结构不一致:雅虎财经不同股票的详情页统计表格布局不统一,你当前公式固定取第2个表格的第6行第2列的内容,仅适配部分股票的页面结构,SIE.DE这类欧盟股票的股息数据位置发生了偏移,或者对应页面不存在你指定的表格结构,就会触发取值报错。
- 反爬与访问限制:雅虎财经对部分区域股票的页面设置了访问限制,谷歌表格的IMPORTHTML工具的请求IP如果不属于欧盟地区,请求SIE.DE这类欧盟股票页面时会被拦截,返回404状态码,对应报错资源未找到。
解决方法
- 调整固定索引参数:手动打开SIE.DE的雅虎财经详情页,找到统计表格中股息数据对应的行号,将公式中
INDEX函数的第二个参数(当前为6)修改为实际的行号即可适配。 - 改用模糊匹配的动态取值逻辑,避免固定索引的偏移问题,参考公式如下:
=SPLIT(INDEX(FILTER(IMPORTHTML(CONCATENATE("https://finance.yahoo.com/quote/",B5),"table",2),LEFT(INDEX(IMPORTHTML(CONCATENATE("https://finance.yahoo.com/quote/",B5),"table",2),0,1),10)="Forward Div"),1,2)," ")
该公式会自动过滤出第一列包含前瞻股息标识的行,再提取对应股息数值,适配不同股票的页面布局。 - 添加区域访问参数:在请求URL末尾添加欧盟地区参数,降低访问被拦截的概率,修改后的参考公式如下:
=SPLIT(INDEX(FILTER(IMPORTHTML(CONCATENATE("https://finance.yahoo.com/quote/",B5,"?region=EU"),"table",2),LEFT(INDEX(IMPORTHTML(CONCATENATE("https://finance.yahoo.com/quote/",B5,"?region=EU"),"table",2),0,1),10)="Forward Div"),1,2)," ") - 改用原生函数备选:如果上述方案都失效,可以直接用谷歌表格自带的GOOGLEFINANCE函数获取股息数据,无需爬取第三方页面,参考公式:
=GOOGLEFINANCE(B5,"dividendyield")
可以直接返回对应股票的股息率,适配绝大多数上市股票的代码。
内容的提问来源于stack exchange,提问作者Sven DG
相关产品推荐
相关产品推荐

