Google Sheets中用ImportXML提取无类/ID的div的data属性方法
用Google Sheets的IMPORTXML提取div的data属性值
嘿,我来帮你搞定这个问题!要从指定的div标签里提取data-film-id和data-film-release-year这两个属性值,核心是写对XPath查询语句,配合IMPORTXML函数就能轻松实现。
核心思路
IMPORTXML的基础语法是:=IMPORTXML(目标页面URL, XPath查询)。我们需要先通过div的class定位到目标元素,再直接提取对应的属性值。
具体公式示例
假设你把目标页面的URL放在了单元格A1里,那么:
提取data-film-id
用这个公式:=IMPORTXML(A1, "//div[contains(@class, 'film-poster')]/@data-film-id")拆解一下逻辑:
//div:遍历页面中所有div元素contains(@class, 'film-poster'):筛选出class属性里包含film-poster的div(用contains比精确匹配class更灵活,能避免页面class新增/调整导致公式失效)/@data-film-id:直接提取该div的data-film-id属性值
提取data-film-release-year
类似的,把属性名替换一下即可:=IMPORTXML(A1, "//div[contains(@class, 'film-poster')]/@data-film-release-year")
进阶技巧:精准定位单个元素
如果页面上有多个带film-poster类的div,只想提取第一个匹配的元素属性,可以在XPath里加索引[1]:
# 提取第一个匹配div的data-film-id =IMPORTXML(A1, "//div[contains(@class, 'film-poster')][1]/@data-film-id")
要是你需要极端精准的定位(比如用完整的class字符串),也可以换成精确匹配写法:
=IMPORTXML(A1, "//div[@class='react-component film-poster film-poster-193260 poster linked-film-poster -attributed']/@data-film-id")
不过这种方式容错率低,一旦页面的class有变动(比如新增类名),公式就会失效,所以更推荐用contains的写法。
内容的提问来源于stack exchange,提问作者lise
相关产品推荐
相关产品推荐

