2011-08-20 138 views
1

我試圖從頁面獲取一些元素。不幸的是它帶有一個空的列表。漂亮的印刷樹包括這個元素:Xpath不匹配

<html:a title="..." href="..." id="..." class="topic_title">...</html:a> 

但是我這樣做在同一棵樹上時:

page.xpath('''.//a[@class="topic_title"]''') 

我得到一個空列表。該樹是使用html5lib/lxml treebuilder創建的。

回答

2

看來,如果你正在處理XHTML,所以你可以評估XPath表達式之前註冊了命名空間html

page.xpath('''.//html:a[@class="topic_title"]''', 
      namespaces={'html': 'http://www.w3.org/1999/xhtml'}) 

Namespaces and Prefixes參見:

如果你的XPath表達式使用命名空間前綴,你必須在前綴映射中定義它們。爲此,將一個字典傳遞給namespaces關鍵字參數,該參數將XPath表達式中使用的名稱空間前綴映射到名稱空間URI。