首页 > 解决方案 > ImportXML 返回空

问题描述

我试图在这个网站上抓取帖子的内容标题:https ://www.hortidaily.com/sector/553/greenhouse/

使用 Google 表格 Importxml 功能。

所有帖子都以相同的格式编写:

<a class="article" href="link1">
 <img src="img1.jpg" align="default" border="0" class="indexdefault">      
    <h1>Titre1</h1>
    <p>Texte1</p>
</a>

带有 Xpath = 的 ImportXML 函数:

- //a[@class ='article']/@href return link1 : ok
- //a[@class ='article'][1]/img/@src return img1 : ok
- //a[@class ='article'][1]/h1 return #NA (imported content is empty) 即使 XPath 在 chrome XPath Helper 中工作...

虽然 //h1[1] 返回第一篇文章的标题,但问题我不明白为什么 //a[@class ='article'][1]/h1 不起作用,我想确定 h1我得到的是第一个下的h1<a class="article" href="link1">

我已经尝试了几乎所有我能想象的,没有发现问题。我需要帮助 !

提前谢谢你

标签: google-sheets-formula

解决方案


  • 您想检索h11st 中的值a[@class ='article']
  • 你想知道为什么//a[@class ='article'][1]/h1返回#NA

如果我的理解是正确的,这个答案怎么样?

问题原因:

<div id="hoofdartikelen">

  <a class="article" href="link1">
    <img src="img1.jpg" align="default" border="0" class="indexdefault">
    <h1>Titre1</h1>
    <p>Texte1</p>
  </a>

</div>

在我的调查中,对于上述 HTML 数据,标签名称似乎a<a class="article" href="link1">问题所在。例如,将标签名称修改为div时,可以确认=IMPORTXML(A1,"//div[@class ='article'][1]/h1")有效。

而且,似乎在上面的 HTML 中,标签h1p不是标签的孩子a。所以下面的公式有效。

=IMPORTXML(A1,"//div[@id='hoofdartikelen']/h1[1]")

=IMPORTXML(A1,"//div[@id='hoofdartikelen']/p[1]")

但是,=IMPORTXML(A1,"//div[@id='hoofdartikelen']/img[1]/@src")不起作用。必须是=IMPORTXML(A1,"//div[@id='hoofdartikelen']/a[1]/img/@src"). 所以看起来标签imga.

xpath 示例:

根据以上结果,在您的情况下,我认为以下 xpath 示例可能是合适的。

  • //div[@id='hoofdartikelen']/h1[1]
  • //h1[1]
  • //a[@class ='article']/../h1[1]

参考:


推荐阅读