xpath非运算符和多重选择

0 投票
2 回答
2351 浏览
提问于 2025-04-17 02:10
for link in hxs.select("//a[contains(@href,'/women-')]"):
    if ('.a[notcontains(@href,"/women-shoes")]'):
        self.log("LINKS2 :: %s" % attribute::href())

第一句话是在选择所有包含 /women- 的链接。简单来说,我想选出所有网址中有 /women- 的链接,但不包括 /women-shoes 的链接。

  1. 我该如何在 for 循环中加上这个条件呢?我想知道在循环条件中正确使用 not 操作符的方法。此外,
  2. 如果我想先选出所有网址中有 /women- 的链接,然后在 if 条件中检查这个链接的地址里没有 /women-shoes,我该怎么做呢?

2 个回答

1

我觉得这样做会更有效率,因为它会先检查这个网址里有没有/women-shoes,然后再看看有没有/women-:

queryStr = "//a[not(contains(@href,'/women-shoes')) and contains(@href,'/women-') ]
0

为什么不在你的查询中进行过滤呢?

queryStr = "//a[contains(@href,'/women-') and not(contains(@href,'/women-shoes'))]"
for link in hxs.select(queryStr):
    self.log("LINKS2 :: %s" % attribute::href())

撰写回答