Google Sheet:Yahoo Finance的IMPORTXML

时间:2017-01-09 23:34:59

标签: xpath import google-sheets

我正试图从雅虎财务中导入当前股票价格。我使用了一些网站的公式,它部分工作。我只知道如何告诉它寻找一个特定的查询,它适用于我需要的其他一些数据点,但价格变化查询从

更改

“Fw(500)Pstart(10px)Fz(24px)C($ dataRed)”

“Fw(500)Pstart(10px)Fz(24px)C($ dataGreen)”

取决于当天的价格是上涨还是下跌。

如何修改我在下面使用的公式,在这种情况下使用“或”运算符?因此无论股票当天是涨还是跌,它都会降低价格。谢谢!

我正在使用的公式: = IMPORTXML(“https://finance.yahoo.com/quote/IBM”,“// span [@ class ='Fw(500)Pstart(10px)Fz(24px)C($ dataRed)']”)

5 个答案:

答案 0 :(得分:1)

我注意到其他答案对我不起作用(它们过去可能有用),因此我决定发布此解决方案。只需将代码置入 A1 单元格中,然后将以下一个或两个公式放在其他位置即可。

价格:

=IFNA(VALUE(IMPORTXML("https://finance.yahoo.com/quote/" & A1, "//*[@class=""D(ib) Mend(20px)""]/span[1]")))

更改:

=IFNA(VALUE(REGEXEXTRACT(IMPORTXML("https://finance.yahoo.com/quote/" & A1,"//*[@class=""D(ib) Mend(20px)""]/span[2]"), "^.*?\s")))

答案 1 :(得分:1)

如果您只想要价格:

=IFNA(VALUE(IMPORTXML("https://finance.yahoo.com/quote/" & $A1, "///*[@class=""D(ib) Mend(20px)""]/跨度[1]")))

答案 2 :(得分:0)

您可以使用更加动态/通用的xpath,它不需要这样的特定路径,例如:

这个包含了价格和变化:

=ARRAY_CONSTRAIN(transpose(IMPORTXML("https://finance.yahoo.com/quote/IBM:,"//*[@class='Mt(6px)']//span")),1,2)

如果您只想要价格:

=trim(IMPORTXML("https://finance.yahoo.com/quote/IBM","//*[@class='Mt(6px)']//span"))

如果您只是想要改变:

=IMPORTXML("https://finance.yahoo.com/quote/IBM","//*[@class='Mt(6px)']//span[2]")

enter image description here

答案 3 :(得分:0)

或者您也可以在单元格上使用条件格式,以便颜色仅由单元格的值确定。

答案 4 :(得分:0)

遗憾的是,雅虎财经经常更改其网站的 XML/HTML 结构。现在有效的是:

=IMPORTXML("https://finance.yahoo.com/quote/IBM/", "//*[@id=""quote-header-info""]/div[3]/div[1]/div/span[1]")

您可以随时打开 HTML 结构并使用开发人员工具查找和复制 X 路径。

PS1. 虽然似乎有 a bug 并且该函数无法从包含点/点/句点“.”的 URL 中检索数据名字。

P.S.2. IMPORTHTML() 函数也无法从 Yahoo Finance 获取最新价格,因为信息既不在表格中也不在列表中。您可以尝试使用 this pagethis page 中的脚本列出所有 tablelist