我想在使用XPATH定义为属性的'onClick'功能的网页上选择所有锚标签。 我定位的网页有这样的锚标签
<a href="status.php?op=del&status_id=2" onclick="return confirm('Are you sure you want to delete this item?')">Delete</a>
经过大量搜索后,我发现了以下可能的解决方案,但似乎都没有。我试过(并且失败了)
//a[@onclick|@href]
//a[onclick]
//a[@onclick]
//a/@*[name()='onclick']
./*[onclick] #this should have selected all nodes with onclick function
我也试过
//a/@onclick
但这只返回onclick函数定义,因为我想要整个锚标记。
问题:如何使用XPATH获取所有将onclick函数定义为属性的锚标记?
答案 0 :(得分:1)
XPath //a[@onclick]
应该有效。
尝试在浏览器的控制台中执行此操作以提醒每个锚:
(function(){
var withOnclick = document.evaluate('//a[@onclick]', document, null, XPathResult.ORDERED_NODE_ITERATOR_TYPE, null);
var anchor = withOnclick.iterateNext();
while (anchor) {
alert(anchor.outerHTML);
anchor = withOnclick.iterateNext();
}
}())
答案 1 :(得分:0)
$("a[onclick]")
如果您正在使用jQuery,应该可以使用onclick查找所有锚点
答案 2 :(得分:0)
最后我能够使用
来做到这一点//a[@onclick]
早些时候我在不正确的响应对象上应用它,因此无法获取链接。 要进一步添加,要获取'url'值,可以执行以下操作:
HtmlXPathSelector(response).select('//a[@onclick]/@href').extract()
这将返回属于锚点标记的所有链接的列表,其中“onclick”函数被定义为属性。
感谢您的回答。