我在xPath中遇到了问题。
我这样做:
//tbody/tr[td]*[2]/span/@onmouseover
结果:
showMsgBox('Monster')
showMsgBox('Limber')
showMsgBox('Carson')
showMsgBox('Maniac')
我需要文字,我可以提取不同的文字吗?我在Chrome中使用了刮刀。谢谢大家。
答案 0 :(得分:1)
所以看起来你有这样的HTML结构:
<tbody>
<tr>
<td>
<span onmouseover="showMsgBox('Monster')"></span>
</td>
</tr>
</tbody>
你正试图让Monster
离开它。
由于你没有分享你的HTML,我快速尝试复制类似于它的东西。它的意思是说明性的,与你的不完全匹配。
只有XPath才能做到这一点。 XPath允许您选择DOM中的节点。您在此HTML中使用XPath可以达到的最低级别正是您已有的:
//tbody/tr[td]*[2]/span/@onmouseover
返回
showMsgBox('Monster')
如果要从中提取Monster
,则必须使用其他机制,例如简单的字符串操作或正则表达式。
var text = "showMsgBox('Monster')";
text = text.substring( "showMsgBox('".length );
text = text.substring(0, text.length - "')".length);
或者如果你不介意魔法常数:
var text = "showMsgBox('Monster')";
text = text.substring(12);
text = text.substring(0, text.length - 2);
或使用slice
进行单一操作:
text.slice(12, -2)
您也可以使用正则表达式来提取文本,但我觉得这不会让事情变得更好。
var text = "showMsgBox('Monster')";
new RegExp("showMsgBox\\('(.*)'\\)").exec(text)[1]
或
/showMsgBox\('(.*)'\)/.exec(text)[1]