【问题标题】:ImportXML return emptyImportXML 返回空
【发布时间】:2019-08-14 19:30:11
【问题描述】:

我试图在这个网站上抓取帖子的内容标题: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是第一个&lt;a class="article" href="link1"&gt; 下的h1

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

提前谢谢你

【问题讨论】:

    标签: google-sheets-formula


    【解决方案1】:
    • 您想在第一个a[@class ='article'] 中检索h1 的值。
    • 您想知道为什么//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 数据,&lt;a class="article" href="link1"&gt; 的标签名称 a 似乎是问题所在。例如,将标签名称修改为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]

    参考:

    【讨论】:

    • 亲爱的 Tanaike,非常感谢您的帮助!不幸的是,看到我的帖子,已经找到了这个解决方案......我想确定的是,当我在 h1 中提取文本时,它是文章链接下的文本......我也无法想象 ImportXML 中存在错误并想了解为什么我的 XPath 不起作用以及出了什么问题!
    • @Benoit de Combaud 很抱歉我误解了你的问题。我更新了我的答案。你能确认一下吗?如果我误解了您的问题并且这不是您想要的方向,我再次道歉。
    • 非常感谢您的帮助并花时间分析解决方案。你的答案看起来是对的,h1 不是 a 的孩子,但是我不明白,因为我们有一个 打开标签,然后是

      ...

      ,然后是
      关闭标签。是错误还是我不明白 XML 中的子项是什么?
    • @Benoit de Combaud 我认为您的考虑是正确的。例如修改为&lt;img src="img1.jpg" align="default" border="0" class="indexdefault"&gt;&lt;/img&gt;,当上面的HTML在"XPath Tester"进行测试时,//a[@class ='article'][1]/h1返回&lt;h1&gt;Titre1&lt;/h1&gt;。但是IMPORTXML()用于这个xpath,似乎h1不包含在a中。从这种情况来看,我认为这可能是IMPORTXML() 的一个bug。如果这不是您想要的结果,我深表歉意。
    • @Benoit de Combaud 我可以从你的问题中学习。也谢谢你。
    猜你喜欢
    • 2020-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多