0

可能遗漏了一些明显的东西——当我过滤一般的“a”节点时,我可以看到它们的文本——包括我想要的目标链接——很好:

ipdb> print [x.text for x in root.xpath(u".//a")]
[u'\u0391\u03c0\u03bf\u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7', None, ... ]

但是,当我过滤上面返回的第一个“a”元素中包含的特定文本时,我什么也得不到:

ipdb> print [x.text for x in root.xpath(
    u".//a[text()=" + 
    u'\u0391\u03c0\u03bf\u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7' + 
    u']'  )]
[]
ipdb> 

有任何想法吗?

4

1 回答 1

1

这里有两种语言:Python 和 XPath。他们每个人都有引用的字符串。

在解释 Python 语法时,传递给.xpath()(您的 XPath 表达式)的字符串内容是这样的:.//a[text()=Some text]. 然而,文本的文字字符串需要在 XPath: 中引用.//a[text()="Some text"]。然后,您需要将其编码为 Python 字符串。在这里,您有几个选择:

.xpath('.//a[text()="Some text"]')
.xpath(".//a[text()=\"Some text\"]")
.xpath(""".//a[text()="Some text"]""")
于 2013-01-21T16:53:12.113 回答