1

我正在尝试使用 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);
    }
});

当我运行上面的代码时,我收到以下错误

命令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
4

1 回答 1

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,因为它取决于使用fspath模块的节点绑定。您将不得不更改实现,以便可以使用 phantomjs 功能来表达所有依赖项。

另一种方法可能是使用phantom-nodespookyjs作为 casperjs node.js 模块。

于 2014-07-07T10:01:52.417 回答