![](/img/trans.png)
[英]Google Sheet Web-scraping ImportXml Xpath on Yahoo Finance
[英]Google Sheet: IMPORTXML from Yahoo Finance
我正在尝试从雅虎财经导入当前股价。 我使用了某个网站的公式,它部分起作用。 我只知道如何告诉它寻找一个特定的查询,它对我需要的其他一些数据点工作正常,但价格变化查询从
"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)']")
我注意到其他答案对我不起作用(它们过去可能有用),所以我决定发布这个解决方案。 只需将股票代码放在单元格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")))
您可以使用不需要此类特定路径的更动态/通用的 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]")
如果你只想要价格:
=IFNA(VALUE(IMPORTXML("https://finance.yahoo.com/quote/" & $A1, "//*[@class=""D(ib) Mend(20px)""]/span[1) ]")))
目前正在使用 googlefinance api,但发现即使将更新设置为每分钟更新一次,它也不会经常更新,因此目前正在测试下面是否允许至少在工作表中按 F5 键进行更新
这带来了价格和其他信息(日期为 2022/09/27)
=IMPORTXML("https://finance.yahoo.com/quote/SAVA/", "//*[@id=""quote-header-info""]/div[3]/div[1]/div [1]")
遗憾的是,雅虎财经经常更改其网站的 XML/HTML 结构。 现在有效的是:
=IMPORTXML("https://finance.yahoo.com/quote/IBM/", "//*[@id=""quote-header-info""]/div[3]/div[1]/div/span[1]")
您可以随时打开 HTML 结构并使用开发人员工具来查找和复制 X 路径。
PS1。 尽管似乎存在错误,并且该函数无法从名称中带有点/点/句点“ .
”的 URL 检索数据。
PS2。 IMPORTHTML()
函数也不能从雅虎财经获取最新价格,因为信息既不在表格中也不在列表中。 您可以尝试此页面和此页面中的脚本以列出所有table
和list
。
或者您可以在单元格上使用条件格式,以便颜色仅由单元格的值确定。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.