【问题标题】:Returned values from ImportXML in Google Sheet is different than the actual values on Yahoo FinanceGoogle Sheet 中 ImportXML 的返回值与 Yahoo Finance 上的实际值不同
【发布时间】:2021-01-10 08:16:44
【问题描述】:

我正在尝试使用 ImportXML 将 Yahoo Finance 中的期权价格导入我的 Google 表格,但 Google 表格中收到的某些价格的实际值与我在 Yahoo Finance 网站上看到的非常不同。我什至尝试过 ImportHTML,结果是一样的。

Google 表格中使用的公式:

=TRANSPOSE(IMPORTXML( "https://finance.yahoo.com/quote/KL220121C00045000?p=KL220121C00045000" ,"//tr"))

这是 Google Sheet 中的结果(所有红色单元格都是不同的值):

雅虎财经页面上的实际值:

我完全不知道为什么会发生这种情况以及如何解决它。

【问题讨论】:

  • 我认为这个线程可能对您的情况有用。 stackoverflow.com/q/64437503 现在,当我使用此示例脚本将 =SAMPLE("https://finance.yahoo.com/quote/KL220121C00045000?p=KL220121C00045000") 放入单元格时,我可以确认可以检索站点的值。
  • 感谢您的建议。该解决方法确实有效。所以,我至少畅通无阻。但是我不知道上面是如何给出完全不同(非常不同)的返回值的。希望我们也能弄清楚这一点。
  • 在尝试了几次解决方法之后,我确实看到一些返回的值仍然与 Yahoo 网页不同。但是,这一次大多数值完全相同,很少有数字是关闭的(即使对于那些,差异也不像 200%)。
  • 感谢您提供更多信息。

标签: google-sheets google-sheets-formula yahoo-finance


【解决方案1】:

@Tanaike 指向ImportXML not producing correct values 的链接回答了如何使用应用脚本解决该问题。


为了回答“为什么”这个问题,我相信雅虎财经已经实现了某种 user agent detection,这样来自 Google 电子表格的请求,或者更具体地说是使用用户代理 Mozilla/5.0 (compatible; GoogleDocs; apps-spreadsheets; +http://docs.google.com) 的请求将得到不同的服务(我相信旧)版本的数据。

当我在浏览器中访问链接https://finance.yahoo.com/quote/KL220121C00045000?p=KL220121C00045000时,它当前显示

As of 3:17PM EST. Market open

但是当我change my user agent 模仿 Google 表格时,我得到了

As of 10:43AM EST. Market open.

与IMPORTXML 的结果相同。

我猜他们这样做是为了减少从自动电子表格中获取的次数,或者阻止人们使用 Google 表格抓取他们的网站。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-30
    • 1970-01-01
    • 2021-09-01
    • 1970-01-01
    相关资源
    最近更新 更多