【问题标题】:Use xpath in importhtml在 importhtml 中使用 xpath
【发布时间】:2016-01-21 13:17:38
【问题描述】:

我正在尝试将产品搜索中的点赞输入到谷歌电子表格中。

我尝试了以下方法:

=IMPORTHTML(A2,"//section[@class='post-vote-button--count']/text()")

A2 在我的情况下是 https://www.producthunt.com/tech/i-brew-my-own-coffee

任何建议我做错了什么?

【问题讨论】:

    标签: html xpath google-sheets


    【解决方案1】:

    IMPORTHTML 只允许您查找列表或表格。 IMPORTXML 将允许您使用通用 XPath 表达式。

    IMPORTXML 函数实际上是用于读取 XML 数据,而不是 HTML。但如果 HTML 是 XHTML 或合理的 HTML,则可以使用IMPORTXML 导入 HTML 数据,然后对其应用 XPath 表达式。

    在这种情况下,HTML 的格式不够好,无法被 IMPORTXML 函数解析,IMPORTHTML 不允许您找到您感兴趣的内容。

    所以,据我所知:除了为 Google 表格编写自定义代码之外,没有其他方法可以实现您想要的。


    编辑:正如 Aurielle Perlmann 所指出的,上面的 cmets 是对 OP 特定问题的错误分析。其实这个公式

    =IMPORTXML("https://www.producthunt.com/tech/i-brew-my-own-coffee","//span[@class='post-vote-button--count']")
    

    或者 Aurielle 的那个会起作用。在 HTML 源代码中,“166” - 想要的结果 - 不在 section 元素内,而是在 span 元素内。这是页面源的sn-p:

    <span class="post-vote-button--count" 
          data-reactid=".2dbdvned0xs.0.0.0.2.1.1">166</span>
    

    此外,在 Google 表格的 XPath 表达式中使用 text() 似乎有问题。

    【讨论】:

    • 非常感谢您的回答!您将如何编写客户代码?你能提出一个简短的概念吗?我怎么能在不知道的情况下到达这个标签s specific path via xpath`?
    • @mrquad 您应该认真考虑这是否值得付出努力。 “自定义代码”是指开发Sheets add-on with Apps Script“我怎么能在不知道通过 xpath 的具体路径的情况下到达这个标签?” 我真的不明白你的意思 - 阅读你的问题,我的印象是你已经 知道这个项目的具体路径。编写自定义代码意味着使用允许您解析 HTML 并使用此路径表达式的功能扩展 Google 表格。
    • @mrquad 另外,这只是一个建议,我不知道 Apps Script 平台到底能做什么。
    • 见下文 - 使用 importxml 而不是自定义代码绝对可以实现
    • @AuriellePerlmann 你是对的,我的回答是错误的。问题实际上是“166”不在section 元素内,而是在span 元素内。感谢您注意到这一点。
    【解决方案2】:

    你可以用这个 xpath 拉它:

    =IMPORTXML("https://www.producthunt.com/tech/i-brew-my-own-coffee","//*[@class='post-vote-button--count']")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多