繁体   English   中英

使用xpath选择所有具有onclick的锚点标签

[英]select all anchor tags having onclick using xpath

我想使用XPATH在具有“ onClick”功能定义为属性的网页上选择所有锚标签。 我定位的网页上有这样的定位标记

<a href="status.php?op=del&amp;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函数的锚标记?

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

如果您使用的是jQuery,则$("a[onclick]")应该可以找到所有带有onclick的锚点

终于我能够使用

//a[@onclick]

之前我在错误的响应对象上应用了此方法,因此无法获取链接。 要进一步添加,要获取“ url”值,可以执行以下操作:

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

这将返回属于锚标签的所有链接的列表,该锚标签具有定义为属性的“ onclick”功能。

感谢您的回答。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM