我正在尝试使用phantomjs为以下文件解析xml documentpreviewer1.js
var webPage = require('webpage');
var page = webPage.create();
var url = "http://xxx/sitemap.xml";
page.open(url, function(status){
if(status != 'success'){
console.log('Unable to access cfc');
}
else
{
var xml = page.content;
var libxmljs = require("libxmljs");
var xmlDoc = libxmljs.parseXml(xml);
var url1 = xmlDoc.get('//urlset/url[0]/loc');
console.log(url1);
}
});
当我运行上面的代码时,我收到以下错误
cmd sudo phantomjs documentpreivewer1.js
Error: Cannot find module 'libxmljs'
phantomjs://bootstrap.js:289
phantomjs://bootstrap.js:254 in require
documentpreivewer1.js:13
:/modules/webpage.js:281
答案 0 :(得分:1)
libxmljs是一个node.js模块。虽然phantomjs可以通过npm安装(不需要),但它不是node.js模块。它不与node.js共享任何内置模块(fs
似乎相同,但不等于node.js fs)。
您可以在phantomjs中使用一些node.js模块(请参阅Use a node module from casperjs了解相关问题),但似乎您不能在phantomjs中使用libxmljs,因为它依赖于节点绑定使用fs
和path
模块。您必须更改实现,以便可以使用phantomjs功能表达所有依赖项。
另一种方法可能是使用phantom-node或spookyjs作为casperjs node.js模块。