select 使用 xpath 具有 onclick 的所有锚标记

select all anchor tags having onclick using xpath

我想 select 网页上所有具有 'onClick' 功能的锚标记定义为使用 XPATH 的属性。 我定位的网页有这样的锚标记

<a href="status.php?op=del&amp;status_id=2" onclick="return confirm('Are you sure you want to delete this item?')">Delete</a>

经过大量搜索后,我发现了以下可能的解决方案,但其中 none 似乎有效。我尝试过(但失败了)

//a[@onclick|@href]
//a[onclick]
//a[@onclick]
//a/@*[name()='onclick']
./*[onclick]  #this should have selected all nodes with onclick function

我也试过了

//a/@onclick

但这只是 returns onclick 函数定义,因为我想要整个锚标记。

问题:如何使用 XPATH 获取所有具有定义为属性的 onclick 函数的锚标记?

如果您使用 jQuery

$("a[onclick]") 应该可以使用 onclick 查找所有锚点

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();
  }
}())

最后我可以使用

//a[@onclick]

早些时候我将其应用于错误的响应对象,因此无法获得链接。 要进一步补充,要获得 'url' 值,可以执行以下操作:

HtmlXPathSelector(response).select('//a[@onclick]/@href').extract()

这将 return 属于具有 'onclick' 功能定义为属性的锚标记的所有链接的列表。

感谢您的回答。