为了在很多很多页面中获得我想要的正确内容 - 我已经提出了一个99%的时间可以运行的规则:
//a[@class='popular class' and not (contains(text(),'text1')) and not (contains(text(),'text2'))]
另外1%导致找到超过1个匹配节点,并需要更多特殊处理" not (contains(text(), 'specialtext'))
我想到的是,我想要的值只有1个字符,最多4个,而特殊处理案例总是超过4个数字。
我想要做的是在我的xpath中添加另一个看起来像这样的条件:
//a[@class='popular class' and not (contains(text(),'text1')) and not (contains(text(),'text2')) and (text_length() < 5)]
这应该作为一个100%的规则,总是让我得到我需要的特定节点。 我在Java中看到过类似的东西:
System.out.println("Select elements which
have string length less than 4");
expr = xpath.compile(".//*[string-length(name()) < '4']")
但无法找到与Python匹配的功能。
有没有?
答案 0 :(得分:1)
string-length()不是Java
函数,而是XPath
函数!您可以在表达式中使用相同的方式:
//a[@class='popular class' and not (contains(text(),'text1')) and not (contains(text(),'text2')) and string-length(.) < 5]