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 の 2 つの言語があります。それぞれに引用符付きの文字列があります。

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 に答える