【问题标题】:importXML xPath: Retrieve stock information from website to Google SheetsimportXML xPath:从网站检索股票信息到 Google 表格
【发布时间】:2016-07-14 17:04:59
【问题描述】:

如何通过 Google 表格从本网站检索 EPS 股票信息? http://seekingalpha.com/symbol/KO

我想在 Google 表格中输出的是这个值:

1.66

在该网站上,我认为从中提取该信息的相关 XML 代码是这样的:

<span class="right" id="qp_eps">1.66</span>

这个 Google 表格公式只返回一个错误:

=ImportXML("http://seekingalpha.com/symbol/KO/focus", "//span[@id='qp_eps'")

【问题讨论】:

  • 你的 xpath 不应该是这样的吗://span[@id='qp_eps']/text() 如果有数千个 span 元素的属性为 id="qp_eps"
  • 我之前没有接触过xPath,基本上不知道。我试过你的提议,但不幸的是,这也没有检索到任何东西
  • 您知道该链接中是否只有一个 id = 'qp_eps' 的跨度?
  • 嗯,在 Microsoft Edge 的 DOM Explorer 中我只能找到一次
  • 您是否尝试过验证您在页面加载后在浏览器中看到的 HTML/DOM 是否与从您提供给 ImportXML() 的 URL 中获取的原始 HTML 相同?在我看来,原始 HTML 与 id='qp_eps' 没有跨度。它必须稍后通过Javascript或其他东西添加。因此ImportXML()不会加载它。

标签: xpath web-scraping google-sheets


【解决方案1】:

您在浏览器开发人员工具中看到的 HTML/DOM 不是从 Web 服务器接收到的原始 HTML;它已通过在浏览器中运行的 Javascript 动态增强。

您可以在浏览器中转到您正在导入的 URL (http://seekingalpha.com/symbol/KO/focus) 并执行“保存”(仅限 HTML)来检查此项。然后检查保存的文件。它不包含任何带有id="qp_eps" 的元素,是吗?

如果您有curlwget,则可以使用它们从网络服务器获取原始 HTML 并验证其中包含的内容。这是ImportXML() 看到的 HTML,因此您必须在编写 XPath 时牢记此 HTML。

【讨论】:

    【解决方案2】:

    我有一个解决方法:

    使用 IMPORTDATA 代替 IMPORTXML,您可以使用 Index,奇怪的是,即使使用不同的代码,它也非常一致:

    有两种方法可以解决 - 首先是两次使用索引:

    =INDEX(SORT(INDEX(IMPORTDATA("http://seekingalpha.com/symbol/KO"),,55)),3)
    

    如果你想清理它只返回值,你可以替换“eps:”部分:

    =SUBSTITUTE(INDEX(SORT(INDEX(IMPORTDATA("http://seekingalpha.com/symbol/KO"),,55)),3),"eps:","")
    

    第二个是再次使用索引,但不是索引两次,你可以加入值并用正则表达式输出你想要的:

    =REGEXEXTRACT(CONCATENATE(SORT(INDEX(IMPORTDATA("http://seekingalpha.com/symbol/AAPL"),,55))),"eps:(.*)NOW_P")
    

    这是两种类型的两个截图:

    【讨论】:

    • 非常适合你的东西:)。我有一个问题,因为我只收到带有 SUBSTITUTE 公式的“NOW_P:-0.01”和带有 REEXTRACT 公式的“#N/A”。我认为这可能与格式有关?除此之外,我想知道“55”和“3”代表什么,因为我想检索更多信息,例如该网站的“P/E”使用相同的原则。但是,现在我被卡住了,但我想这只是一个小问题。非常感谢!!!!
    • 哦,是的,55 是一个索引,所以如果你单独使用 importdata,你会看到大量看似非结构化的数据,但我没有将它们全部混入一个单元格的原因是它超过字符限制 - 例如,如果您将公式减少到 =SORT(INDEX(IMPORTDATA("http://seekingalpha.com/symbol/KO"),,55)),您将看到列的排序列表,其中包含我认为您想要的值
    • 然后 3 进一步缩小范围 - 如果你有一张正在处理的工作表,我可以跳进去给你看
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-28
    • 2019-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多