Javascript 如何使用xpath从用angular编写的网页中提取文本?
以前,google voice允许您使用“div”提取短信代码。最近,他们使用AngularJS切换到基于ARIA的框架。如何从网页中提取包含所有sms代码的字符串 以下是我与目标xpath一起使用的命令:Javascript 如何使用xpath从用angular编写的网页中提取文本?,javascript,angularjs,xpath,google-voice,Javascript,Angularjs,Xpath,Google Voice,以前,google voice允许您使用“div”提取短信代码。最近,他们使用AngularJS切换到基于ARIA的框架。如何从网页中提取包含所有sms代码的字符串 以下是我与目标xpath一起使用的命令: var search2 = document.evaluate('//*[@id="messaging-view"]/div/md-content/div/gv-conversation-list/md-virtual-repeat-container/div/div[2]/div[1]/d
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);
请看一看。您得到的结果称为节点迭代器。如果像您那样指定ANY\u类型
,这可能是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\u类型
,以简化它
// 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);
请看下面的图片。您得到的结果称为节点迭代器。如果像您那样指定ANY\u类型
,这可能是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\u类型
,以简化它
// 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);
当我在控制台中查看xpathresult时,它会显示“stringValue:[异常:TypeError:未能从'xpathresult'读取'stringValue'属性:结果类型不是字符串。在xpathresult.remoteFunction(:2:14)]”当我在控制台中查看xpathresult时,它会显示“stringValue:[异常:TypeError:未能从'XPathResult'读取'stringValue'属性:结果类型不是字符串。在XPathResult.remoteFunction(:2:14)]”