【问题标题】:IMPORTXML Google Sheets for every 2nd node?每个第二个节点的 IMPORTXML Google 表格?
【发布时间】:2020-05-25 11:39:16
【问题描述】:

我在尝试在谷歌电子表格中使用 IMPORTXML 获取值时遇到问题...

我使用的是 xpath:

//*[contains(@class,"price") 顺利返回,所有价格都发布在网页上

问题是在同一个类中(我不知道为什么,使用动态 ID!)我有 2 个节点/价格:“注册客户价格”和“非客户价格”,这是第二个。价值......以及我有兴趣获得的价值。

所以,我想这样应用它:

(//*[contains(@class,"price")])[2] 有了这个,我只能得到第二个价格......但是整个页面! (而不是每件商品的第二价格!)

我认为这是一个“语法”问题......但无论我尝试多少次,我都没有得到预期的结果!

你能帮我解决这个问题吗? 提前感谢您的任何建议!

【问题讨论】:

  • 分享您的工作表副本
  • 您好 player0,感谢您的关注!在这里您可以访问一个示例,其中包含我想要获取的真实数据:[docs.google.com/spreadsheets/d/…

标签: xpath web-scraping google-sheets filter google-sheets-importxml


【解决方案1】:

只需使用:

//div[@class='price-box'][2]//span[@id]

输出:

编辑:使用 IMPORTFROMWEB:

//h4[.="Precio unitario por unidad"]/following-sibling::span/span[@id]

编辑 2:更强大的 XPath:

//h4[.="Precio unitario por unidad"]/following-sibling::span[@class="price-excluding-tax"][count(following-sibling::*)=0]/span[@id]

【讨论】:

  • 在这一点上,我认为我错误地假设事情会是一样的,在其他情况下使用解决方案,但似乎不是。 - 我应该从那边开始这个话题......以免浪费你的时间!我的错!亲爱的 E.Wiest,即使您的建议是完美的,并且在以这种方式输入 XPath 时工作正常,对于“独立”IMPORTXML ......现在我发现它不是,当尝试将它与 IMPORTFROMWEB 插件一起使用时!有没有机会你明白为什么?
  • 我已经更新了示例表,向您展示它如何与您推荐的 Xpath 一起使用(在独立的 IMPORTXML 中运行良好)...但通过 IMPORTFROMWEB 插件应用!请检查:[docs.google.com/spreadsheets/d/…
  • 好的。我已经编辑了我的答案。当您在谓词([1],[2],...)中使用位置时,插件似乎有点不对劲。所以避免在你的 XPath 表达式中使用它。另外,感谢分享“IMPORTFROMWEB”插件。以前从未听说过它,但它是一个非常好的工具。
  • 太棒了!! E.Wiest,你是个天才,伙计!你救了我的土豆! hehehe 这样,它工作得很好,并且完全符合预期。我没有足够的话来感谢你...解决=)
  • 好的。使用解决方案编辑帖子。对于有 4 个价格的产品,与所有其他产品一样,该值取自第二个 div(“Precio unitario por unidad”)。
【解决方案2】:

尝试:

=FILTER(IMPORTXML(
 "http://www.maxiconsumo.com/sucursal_villa_dominico/comestibles/aceites/aceite-girasol.html";
 "//*[contains(@id,'price-including-tax')]"); MOD(ROW(INDIRECT("A1:A"&COUNTA(IMPORTXML(
 "http://www.maxiconsumo.com/sucursal_villa_dominico/comestibles/aceites/aceite-girasol.html";
 "//*[contains(@id,'price-including-tax')]")))); 2)=0)

【讨论】:

  • 没关系。正如我所描述的那样,结果将如预期的那样......但是(尽管这可能是我的一个错误),我需要这些值在工作表上“纯”到达。因为我未来的打算是将它与 IMPORTFROMWEB 插件一起使用(它允许同时废弃多个 URL)并且它不支持公式......这就是为什么我想从 XPATH 本身获取它(并且坚持这么多) ...没有办法告诉它(在 XPATH 中)只返回找到的第二个节点?非常感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-15
  • 1970-01-01
  • 1970-01-01
  • 2019-06-03
  • 1970-01-01
相关资源
最近更新 更多