javascript - 如何使用xpath从用 Angular 编写的网页中提取文本?

标签 javascript angularjs xpath google-voice

以前,谷歌语音允许您使用“div”提取短信代码。最近,他们切换到使用 AngularJS 的基于 ARIA 的框架。如何从网页中提取包含所有短信代码的字符串?

这是我与目标 xpath 一起使用的命令:

var search2 = document.evaluate('//*[@id="messaging-view"]/div/md-content/div/gv-conversation-list/md-virtual-repeat-container/div/div[2]/div[1]/div/gv-text-conversation-item/gv-conversation-item/div/div[2]/ng-transclude/gv-conversation-item-detail/gv-annotation/text()',
  document, null, XPathResult.ANY_TYPE, null);

Here is the result I see on my Chrome Developer console

最佳答案

看看Mozilla documentation on XPath in javascript 。您返回的称为节点迭代器。如果您像以前那样指定 ANY_TYPE,这可能是 XPath 查询最常见的返回类型。要使您的代码按原样工作,您可以执行以下操作:

// im putting your query in a variable for readability
var query = '//*[@id="messaging-view"]/div/md-content/div/gv-conversation-list/md-virtual-repeat-container/div/div[2]/div[1]/div/gv-text-conversation-item/gv-conversation-item/div/div[2]/ng-transclude/gv-conversation-item-detail/gv-annotation/text()';
var search2 = document.evaluate(query, document, null, XPathResult.ANY_TYPE, null);

var thisNode = iterator.iterateNext();

while (thisNode) {
    console.log(thisNode.textContent); // probably will be a text node
    thisNode = iterator.iterateNext();
}   

或者,您可以将结果类型指定为 STRING_TYPE 来简化它。

// im putting your query in a variable for readability
var query = '//*[@id="messaging-view"]/div/md-content/div/gv-conversation-list/md-virtual-repeat-container/div/div[2]/div[1]/div/gv-text-conversation-item/gv-conversation-item/div/div[2]/ng-transclude/gv-conversation-item-detail/gv-annotation/text()';
var search2 = document.evaluate(query, document, null, XPathResult.STRING_TYPE, null);

console.log(search2.stringValue);

关于javascript - 如何使用xpath从用 Angular 编写的网页中提取文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42731337/

相关文章:

javascript - 通过 AJAX 发送变量后无法获取 $_POST 值

JavaScript - 搜索格式化数字

javascript - 使用jquery查找父级父元素

python - 如何在 Selenium 的 XPath 选择器中选择所有子文本但排除标签?

ruby - 带有 dict 元素的 Plist XPath 查询

python - 无法使用 xpath 使用 selenium 选择元素

javascript - 我可以安全地使用哪些 key 代码来访问我的网站?

javascript - knockout validation : how to validate the fields on button click, 不在输入更改时

javascript - 使用 React.js 的随机数

AngularJS:指令隔离范围 - 范围变量未定义