google-sheets-formula - 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">
我已经尝试了几乎所有我能想象的,没有发现问题。我需要帮助 !
提前谢谢你
解决方案
- 您想检索
h1
1st 中的值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 中,标签h1
而p
不是标签的孩子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")
. 所以看起来标签img
是a
.
xpath 示例:
根据以上结果,在您的情况下,我认为以下 xpath 示例可能是合适的。
//div[@id='hoofdartikelen']/h1[1]
//h1[1]
//a[@class ='article']/../h1[1]
参考:
推荐阅读
- ios - 反向地理编码解释
- javascript - 从网页中读取动态创建的内容
- javascript - D3.js 线过渡超出图表
- java - org.springframework.web.client.HttpClientErrorException: 403 null (Spring RestTemplate)
- gradle - 使用 gradle 复制放在目录中的最新文件
- c - c 编程 - 从 'void*' 到 'record_s* 的无效转换
- sql - 递归 CTE 查找当前和以前的 WorkState 以及 WorkState 的进入时间
- c# - C# 创建一个比较两个成员属性的 LambdaExpression(用于 EF Core HasQueryFilter)
- asynchronous - 异步api调用后如何使用vuex getter
- r - 使用插入符号模型的 H2O.ai 堆叠合奏