2011-09-26 91 views
2
string() 

在某個網頁上效果很好我試圖從中提取文本。xpath的多個字符串()結果?

http://www.bing.com/search?q=lemons&first=111&FORM=PERE

具有類似的結構。對於兵,我已經試過了XPath是

string(//h3/a) 

偉大的工程來獲取搜索結果,即使有強大的標籤等,但只返回的第一個結果。有什麼樣的字符串(),這樣我就可以得到每個

//h3/a 

結果的全文?

+0

您以什麼方式查詢XPath? –

+0

Python lxml + https://addons.mozilla.org/en-US/firefox/addon/xpath-checker/,兩者都給出相同的結果,查詢是字符串(// h3/a) – user964375

回答

0

有什麼樣的字符串(),這樣我就可以得到每個

//h3/a 

結果的全文?

不,不在XPath 1.0中

W3C XPath 1.0 Specification(唯一的規範有關XPath 1.0文檔):

「功能:字符串的字符串(?對象)

字符串函數的對象轉換爲字符串,如下所示:

節點集通過返回字符串值 節點集中節點首先按文檔順序轉換爲字符串「。

所以,如果你只有一個XPath 1.0引擎可用,您需要選擇節點集所有//h3/a元素,然後在承載的XPath的編程語言,遍歷每個節點上,並得到它的字符串值分開。

在XPath 2.0使用

//h3/a/string() 

評估這個XPath 2.0表達式的結果是串的序列,其中的每一個是//h3/a元件中的一個的字符串值。

0

MSDN documentation of string言論:

string()的函數轉換節點集合通過返回在節點集中的第一個節點,該節點在某些情況下可能會產生意想不到的結果的字符串值的字符串。

這聽起來像你正在經歷的。你爲什麼要使用string()

使用//h3/a/text()

+0

我正在使用字符串( ),因爲標籤內的html類似於「blah blah 2 blah 3」,其中text()不會作爲單個字符串拾取。對於每個// h3/a,期望的結果是「blah blah 2 blah 3」 – user964375