我有一个XPath,我正在尝试匹配具有name属性的元标记,其值包含单词'keyword',无论大小写如何。基本上,我想要匹配:
<meta name="KEYWORDS">
<meta name="Keywords">
<meta name="keywords">
使用XPath
'descendant::meta[contains(lower-case(@name), "keyword")]/@content'
我正在使用Scrapy并且它是内置的选择器,但是当我尝试这个XPath时,我收到错误“无效的XPath:...”。 我做错了什么,做出我想要的正确方法是什么?
答案 0 :(得分:10)
Scrapy选择器是在libxml2库上构建的,AFAIK不支持XPath 2.0。至少libxslt并不确定。
您可以使用XPath 1.0 translate()来解决此问题。一般来说,它看起来像:
translate(yourString,
'ABCDEFGHIJKLMNOPQRSTUVWXYZ',
'abcdefghijklmnopqrstuvwxyz')