如何在Google Sheets的IMPORTXML XPath中使用AND运算符筛选排除指定条件的链接
如何在Google Sheets的IMPORTXML XPath中使用AND运算符筛选排除指定条件的链接
嗨,我来帮你搞定这个问题!你现在的问题出在对XPath运算符的理解上——你用的|其实是**“或(OR)”**运算符,不是你以为的“与(AND)”,这就是为什么你的公式会提取所有链接,完全没按预期过滤。
咱们来拆解一下:你原本的表达式//a[not(starts-with(@href, '/'))]/@href | //a[not(contains(@href, 'example.com'))]/@href,意思是“提取所有不以/开头的链接 或者 不包含example.com的链接”,这两个条件加起来几乎覆盖了所有链接,自然达不到你想要的排除效果。
正确的做法是把两个排除条件放在同一个方括号里,用and连接,这样就能筛选出同时满足两个排除要求的链接:
=IMPORTXML(B2,"//a[not(starts-with(@href, '/')) and not(contains(@href, 'example.com'))]/@href")
简单解释下这个表达式:
not(starts-with(@href, '/')):排除所有以斜杠开头的内部链接not(contains(@href, 'example.com')):排除所有包含example.com的链接- 用
and把两个条件连起来,就表示只有同时符合这两个排除规则的链接才会被提取
如果你不确定条件是否生效,可以先单独测试其中一个条件,比如先写//a[not(starts-with(@href, '/'))]/@href确认能过滤内部链接,再加上第二个条件组合,这样更容易排查问题。
备注:内容来源于stack exchange,提问作者Hanzo Hasashi
相关产品推荐
相关产品推荐

