select 使用 xpath 具有 onclick 的所有锚标记
select all anchor tags having onclick using xpath
我想 select 网页上所有具有 'onClick' 功能的锚标记定义为使用 XPATH 的属性。
我定位的网页有这样的锚标记
<a href="status.php?op=del&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' 功能定义为属性的锚标记的所有链接的列表。
感谢您的回答。
我想 select 网页上所有具有 'onClick' 功能的锚标记定义为使用 XPATH 的属性。 我定位的网页有这样的锚标记
<a href="status.php?op=del&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 函数的锚标记?
$("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' 功能定义为属性的锚标记的所有链接的列表。
感谢您的回答。