【问题标题】:Can I use Excel WEBSERVICE to scrape specific content from a page?我可以使用 Excel WEBSERVICE 从页面中抓取特定内容吗?
【发布时间】:2017-10-15 02:12:31
【问题描述】:

我正在尝试将 Yahoo Finance 中的数据导入电子表格。

如果我在 Excel 中输入...

=WEBSERVICE("https://finance.yahoo.com/quote/GOOG/")

...它返回一个#VALUE!由于页面内容超出单个单元格的字符限制而出错。

我只需要在“上一次收盘”之后列出的 Yahoo Finance 值。由于这个数量(目前为 987.83)远低于 Excel 单元格字符限制,有没有办法修改函数以仅返回该数量?

谢谢!

【问题讨论】:

    标签: excel web-services web-scraping


    【解决方案1】:

    在我看来,WEBSERIVCE 更多地用于检索 JSON 或某种 API 端点。您试图解析整个 HTML 页面。所以是的,您可以使用 WEBSERIVCE 来剪贴内容,但您的特定页面返回的数据过多,无法处理。

    根据here的评论:

    • 如果参数导致的字符串无效或包含超过允许的单元格限制 32767 个字符,则 WEBSERVICE 返回 #VALUE!错误值。
    • 如果 url 是一个包含 GET 请求所允许的 2048 个以上字符的字符串,则 WEBSERVICE 返回 #VALUE!错误值。

    我建议使用传统的Query ,您可以在其中随意操作网页。

    然后您可以如下图所示抓取桌子。此外,此内容将根据您允许的设置刷新:

    【讨论】:

    • 谢谢。我查看了 Power Query - 并复制了您提供的链接中的步骤 - 但这只是我想找到上一收盘价的数千只股票之一。理想情况下,我想创建一个包含股票名称的列和另一个包含先前收盘价的列。 Power Query 是否适合从数千页中抓取一条数据?或者从单个页面中提取大量数据是否更好 - 如您包含的示例中那样?
    • “千分之一” - 我认为这是 VBA 个人的工作,因为这对我来说是最简单的。否则,您将需要找到一个能够有效返回端点的金融/股票 API。我知道有一些免费选项可以为您提供 API 密钥,但不能保证实时更新
    • 这是一个使用 WEBSERVICE 的示例 @user2258740 blogs.office.com/en-us/2013/03/21/…
    • 我以前用过带有 API 的 WEBSERVICE,所以我知道它在那里工作。我只是想知道它是否也可以在这里工作。我将尝试 VBA 方法。感谢您的建议。
    • 它可以在没有 VBA 的情况下很好地工作 @user2258740 正如我所提到的,您只需要找到一家提供免费 API 访问的报价公司,或者如果您非常在意则付费,或者任何端点样式的回报这比解析整个网页更有效。我为 MSFT 符号找到了一个示例 here
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-14
    • 2018-02-19
    • 1970-01-01
    相关资源
    最近更新 更多