我正在尝试解析这段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> text </a>",
但我不知道如何在"<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;">
....................
只有onclick="seekVideo(....);
答案 0 :(得分:1)
您可以使用XPath:/div/p/a[1]/text()
- 按索引选择a
或匹配@onclick
值:/div/p/a[starts-with(@onclick, 'seekVideo(0)')]/text()
。因此,两个查询都返回A few years ago,
。
要获取@onclick
seekVideo
中的数字,您可以使用以下表达式:
substring-before(substring-after(@onclick, '('), ')')
例如:要查找a
@onclick
= seekVideo
的{{1}},您可以使用此XPath:
0
或
/div/p/a[substring-before(substring-after(@onclick, '('), ')') = '0']/text()
因此两个查询都返回/div/p/a[number(substring-before(substring-after(@onclick, '('), ')')) = 0]/text()
。
答案 1 :(得分:0)
使用强>:
string(//div/a[starts-with(@onclick, 'seekVideo(0)')])
此表达式计算XML文档中第一个a
的字符串值,该div
是onclick
的子项,其"seekVideo(0)"
属性的字符串值以字符串{{1}}