xpath - 尝试使用包含希腊字母的Xpath时出现“XPath错误:无效谓词”

标签 xpath unicode scrapy

从此网页:page我正在尝试构建一个爬虫,该爬虫将从“Περιοχή:”字段中提取“Μακεδονία>Ν。Ημαθίας>Δ。Δοβρά”。
->查看该项目的屏幕截图:
请参阅下面的链接2
为此,我打算使用XPath专注于“Περιοχή:”,然后使用以下同级关键字访问并提取文本“Μακεδονία>Ν。Ημαθίας>Δ。Δοβρά”,因为包含它可能位于其他网页中的其他位置(但总是在tr后面加上文本“Περιοχή:”),甚至丢失。
请参阅下面的链接3

在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()

我究竟做错了什么?
提前致谢。

最佳答案

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



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


注意,在文本之前没有u,并且在text()之前也不需要@,因为它是xpath函数而不是节点属性。

关于xpath - 尝试使用包含希腊字母的Xpath时出现“XPath错误:无效谓词”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38959508/

相关文章:

xml - 获取 XML 中的属性值

XPath 和特殊字符

xml - 如何在所选属性上使用fn:replace?

mysql - Ruby 1.9.3 上的 Rails 2.3 编码错误

python - XPath和Scrapy-当标签的深度和数量不一致时,会取消链接

java - 使用 Selenium WebDriver Java - css 按钮上传照片

c++ - 如何正确跳过 unicode (UTF-8) 字符?

sql-server - Access 是否对支持 unicode 的数据类型(如 SQL Server 中的 nvarchar)有任何问题?

python - 如何使用 XPath 和 Scrapy 选择特定类型的 URL

python - Scrapy 中项目的 has_key