2011-07-17 74 views
1

提取HREF的文字我試圖解析這片HTML的:從HTML文檔

<div> 
    <p> 
    <a href="#" class="transcriptLink" onclick="seekVideo(0); return false;">A few years ago,</a> 
    <a href="#" class="transcriptLink" onclick="seekVideo(2000); return false;">I felt like I was stuck in a rut,</a> 
    <a href="#" class="transcriptLink" onclick="seekVideo(5000); return false;">so I decided to follow in the footsteps</a> 
    <a href="#" class="transcriptLink" onclick="seekVideo(7000); return false;">of the great American philosopher, Morgan Spurlock,</a> 
    <a href="#" class="transcriptLink" onclick="seekVideo(10000); return false;">and try something new for 30 days.</a> 
    </p> 
</div> 

我想知道如何獲得文本標籤,如:「幾年前,在"<a href="#" class="transcriptLink" onclick="seekVideo(0); return false;">A few years ago,</a> "

<a href="#" class="transcriptLink" onclick="seekVideo(0); return false;"> 
<a href="#" class="transcriptLink" onclick="seekVideo(2000); return false;"> 
.................... 
標籤「

我可以得到"<a> text </a>",

文字,但我不知道怎麼去‘幾年前,’

有大約只有onclick="seekVideo(....);

+0

好問題,+1。查看我的答案,獲得一個簡短且容易的XPath表達式,其評估產生的是正確的文本。 –

回答

1

您可以使用XPath不同: - :/div/p/a[starts-with(@onclick, 'seekVideo(0)')]/text()/div/p/a[1]/text()通過索引或匹配@onclick值選擇a。所以這兩個查詢返回A few years ago,

要獲得@onclickseekVideo號碼,你可以使用這個表達式:

substring-before(substring-after(@onclick, '('), ')') 

例如:要找到a@onclickseekVideo = 0你可以使用這個XPath:

/div/p/a[substring-before(substring-after(@onclick, '('), ')') = '0']/text() 

/div/p/a[number(substring-before(substring-after(@onclick, '('), ')')) = 0]/text() 

因此,這兩個查詢返回A few years ago,

+0

如果我使用「/ div/p/a [1]/text()」,如何獲得seekVideo(number)中的數字? – libai

+0

@ user820914,我更新了我的答案。 –

+0

如何獲取seekVideo中的號碼(數字)? /div/p/a [number(substring-before(substring-after(@onclick,'('),')'))] 是不正確的! 例如: 我想獲得「2000」,該怎麼辦? – libai

0

使用

string(//div/a[starts-with(@onclick, 'seekVideo(0)')]) 

該表達式評估是一個div的孩子在XML文檔中的第一a的字符串值,然後的字符串值,其onclick屬性與開始字符串"seekVideo(0)"