XPath查找没有';不要在幻影中工作
我正在尝试让XPath使用PhantomJS 1.9.2:XPath查找没有';不要在幻影中工作,xpath,phantomjs,Xpath,Phantomjs,我正在尝试让XPath使用PhantomJS 1.9.2: var getElementsByXPath = function(xPath) { return document.evaluate( xPath, document, null, XPathResult.ORDERED_NODE_ITERATOR_TYPE, null); }; var root = getElementsByXPath("//div").iterateNext(); 这将在页面加载时执行,并始终返回n
var getElementsByXPath = function(xPath) {
return document.evaluate(
xPath, document, null, XPathResult.ORDERED_NODE_ITERATOR_TYPE, null);
};
var root = getElementsByXPath("//div").iterateNext();
这将在页面加载时执行,并始终返回null,而querySelector似乎工作正常:
var divs = page.evaluate(function(s) {
return document.querySelector(s);
}, 'div');
我在这个特定的XPath evaluate示例中遗漏了什么吗?我终于发现call document.evaluate必须包含一个page.evaluate调用,如下所示:
page.evaluate(function() {
document.evaluate(
'//div',
document,
null,
XPathResult.ORDERED_NODE_ITERATOR_TYPE,
null);
});
如果希望使用phantomjs获取特定xpath的html内容…-)
文档具有哪种MIME类型?它是否使用名称空间,例如
…
?例如,我在google.com和许多其他网站上试用过。相同的结果。MIME类型会影响WebKit中的XPath实现吗?PhantomJS网站说它对DOM处理、CSS选择器、JSON、画布和SVG有本机支持。这是否意味着它没有内置的XPath功能?我不熟悉PhantomJS,我的评论只是试图指出在HTML上使用XPath时的常见注意事项,比如名称空间和应用程序/xml与文本/HTML。如果使用/*
作为路径会发生什么情况?//*返回[object HTMLHtmlElement]。当我尝试迭代其子节点时,它返回[object HTMLHeadElement]和[object HTMLBodyElement],这两个节点都没有子节点。看来是这样。我还发现,完全相同的代码在Chrome本身也能正常工作。
var xpath= '//*[@id="2b"]';
var address= 'www.mywebadress.com';
page.open(address, function(status) {
setTimeout(grabHtml, 2500);
});
function grabHtml() {
var html = page.evaluate(function(xpath) {
if (document.evaluate) {
var xPathRes = document.evaluate(xpath, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null)
if (xPathRes.singleNodeValue) {
var c = html.singleNodeValue.innerHTML;
} else if (xPathRes) {
var c = "No content found!";
}
} else {
var c = "does not support the evaluate method!";
}
return c;
}, xpath);
console.log(html);