获取“XPath错误:无效谓词”,同时尝试使用包含希腊字母的

时间:2016-08-15 16:59:16

标签: xpath unicode scrapy

从这个网页:page我正在尝试构建一个爬虫,它将从“Περιοχή:”字段中提取“Μακεδονία>N.Ημαθίας>Δ.Δοβρά”。

- >查看该项目的屏幕截图: 见下面的链接号

为了做到这一点,我打算使用XPath专注于“Περιοχή:”,然后使用follow-sibling关键字来访问和提取文本“Μακεδονία>N.Ημαθίας>Δ.Δοβρά”,因为包含它的td可以位于其他网页的不同位置(但总是在带有文本“Περιοχή:”的tr之后)或甚至丢失。 见下面的链接号

在scrapy shell中,我正在测试以下内容:

x = response.xpath(u"//th[@text()=u'Περιοχή:']/text()").extract()

期望获得x = [u“Περιοχή:”]

但我得到一个错误:

ValueError: XPath error: Invalid predicate in //th[@text()=u'\u03a0\u03b5\u03c1\u03b9\u03bf\u03c7\u03ae:']/text()

我做错了什么?

提前致谢。

1 个答案:

答案 0 :(得分:3)

您指定了两次unicode编码,您不应该在xpath中指定它,因为它已经是unicode字符串。

# this:
u"//th[@text()=u'Περιοχή:']/text()"
# should be this:
u"//th[text()='Περιοχή:']/text()"

请注意文本前没有u,因为它不是节点属性,所以你不需要text()之前的@。