【问题标题】:Scrapy: Invalid XPathScrapy:无效的 XPath
【发布时间】:2012-06-21 18:47:14
【问题描述】:
hxs.select("//h:h2[re:test(., 'a', 'i')]").extract()


Undefined namespace prefix
xmlXPathEval: evaluation failed
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/usr/local/lib/python2.7/dist-packages/scrapy/selector/libxml2sel.py", line 44,     in select
raise ValueError("Invalid XPath: %s" % xpath)
ValueError: Invalid XPath: //h:h2[re:test(., 'a', 'i')]

我是 XPath 和 Scrapy 的新手。

它有什么问题? (我正在尝试选择包含单词“a”的节点)。

【问题讨论】:

    标签: xpath scrapy


    【解决方案1】:

    根据回溯,您使用的是未定义的命名空间前缀 re。我不熟悉scrapy,但似乎您必须在某处定义名称空间前缀。

    顺便说一句,您尝试使用的函数不是称为matches吗?

    你可以这样称呼它://h:h2[matches(., 'a', 'i')]

    另一种选择是 //h:h2[contains(lower-case(.),'a')]

    还有,你说的(

    它有什么问题? (我正在尝试选择包含 单词“a”)。

    ) 与函数的语义相矛盾。在您的 sn-p 中,您实际上是在寻找一个包含字母 a 的字符串。不是为了一个词

    如果 a 是元素中唯一的文本,您也可以尝试使用: //h:h2[lower-case(.)='a']

    或者,如果您要在较长的文本中查找 a 作为单词,您可以结合使用 matchesXPath regular expressions

    【讨论】:

      猜你喜欢
      • 2023-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-03
      • 1970-01-01
      相关资源
      最近更新 更多