2011-07-17 48 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)"