使用IMPORTXML时,如何基于后代节点条件筛选电影的时间与名称?
解决Google Sheets IMPORTXML筛选电影对应时间的XPath问题
正确的时间提取公式
直接使用以下公式即可只返回电影对应的播出时间:
=importxml(C1,"/html/body/ul/li/a[.//img[@class='movie']]/span[@class='time']")
逻辑说明
你的HTML结构中,电影的时间标签<span class="time">和标记电影的<img class="movie">同属一个<a class="program">父节点,所以这个XPath的核心逻辑是:
- 先定位到包含
class="movie"图片的<a>标签:a[.//img[@class='movie']],这里的.限定了只查找当前<a>节点下的后代元素,避免误匹配页面其他位置的同class图片 - 再从这个目标
<a>节点下直接取出对应的时间span标签:/span[@class='time']
你之前的XPath错误原因
你尝试的/html/body/ul/li/a/span[//descendant::input[//img[contains(@class, 'movie')]]]存在两个关键问题:
- 你的HTML结构里根本没有
<input>节点,属于无意义的路径匹配 //会全局查找元素,没有限定在当前<a>节点范围内,导致返回了所有节目的时间
额外补充:单XPath同时提取时间和名称
如果你想实现最初的需求——用一条XPath同时获取电影的时间和名称,可以用节点集合并的写法:
=importxml(C1,"/html/body/ul/li/a[.//img[@class='movie']]/(span[@class='time'] | div/h3/text()[normalize-space()])")
其中normalize-space()会自动去掉电影名称前后的空格,避免返回无效的空文本节点。
内容的提问来源于stack exchange,提问作者ez007
相关产品推荐
相关产品推荐

