我正在尝试从列表中返回电影的时间和名称,但是我似乎已经走了这么远,最终还是在原地打转!
这是我正在使用的 HTML:
<li>
<a href="XXXXXX" class="program">
<span class="time">9:00pm</span>
<div class="meta">
<h3><img src="XXXXXX" width="13" height="11" class="movie"> The Transporter 2</h3>
<span class="desc">Action (2005)</span>
<p>MOVIE DESCRIPTION.</p>
</div>
</a>
</li>
每部电影/节目都会重复此格式。 我的目标是一个 XPATH 查询,它同时返回时间和标题,但是我无法理解如何在 XPATH 查询中对其进行格式化。所以现在我已经确定了两个单独的查询,一个是时间查询,另一个是标题查询,然后我可以将它们合并到谷歌表格中。 让事情变得复杂的是,列表中也可能有常规节目,因此我区分节目和电影的唯一方法是查询是否存在具有电影类别的图像。
返回标题时效果很好:
=importxml(C1,"/html/body/ul/li/a/div/h3[descendant::img[@class ='movie']]//text()")
但是,当尝试返回时间时,它会返回所有时间,而不仅仅是那些有图像的时间。 我怀疑这是由于我不理解的兄弟/后代节点造成的。 我已尝试以下操作,但它仍然会始终返回,而不仅仅是标题旁边有图像类的情况。如果没有后代标准,它会返回所有节目和电影的所有时间,理想情况下我希望它只返回电影的时间。
=importxml(C1,"/html/body/ul/li/a/span[//descendant::input[//img[contains(@class, 'movie')]]]")
如果有人有任何建议,我将非常感激,因为我一整天都在兜圈子!
对于第一个 XPath 不需要
descendant::img
,因为它是直接子级。
"/html/body/ul/li/a/div/h3[img[@class ='movie']]/text()"
对于第二个 XPath ,将谓词放在
a
元素上,如下所示
"/html/body/ul/li/a[descendant::img[contains(@class, 'movie')]]/span"