从这个网页: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()
我做错了什么?
提前致谢。
答案 0 :(得分:3)
您指定了两次unicode编码,您不应该在xpath中指定它,因为它已经是unicode字符串。
即
# this:
u"//th[@text()=u'Περιοχή:']/text()"
# should be this:
u"//th[text()='Περιοχή:']/text()"
请注意文本前没有u
,因为它不是节点属性,所以你不需要text()
之前的@。