我正在使用PhantomJS搜索网页上的单词,我试图设置如下:
const phantomjs = require("phantomjs-prebuilt");
if (cmd === `${prefix}check`) {
let word = (args[0]);
var page = require('webpage').create();
page.open('https://discordapp.com/channels/000/000', function(err, data) {
if (err) throw err;
if (data.indexOf(word) >= 0) {
message.reply(word+ ' Found!');
} else {
message.reply(word+ ' Not found.');
}
});
}但是,我得到了以下错误:
(节点:3520) UnhandledPromiseRejectionWarning:错误:找不到模块‘网页’
是什么引起的?
编辑我刚刚看到它不适用于Node,是否可以调用单独的JS文件并传递(args[0]);
发布于 2018-05-03 11:03:45
如果您想使用来自PhantomJS的node.js,您可以,有几个软件包,其中之一是幻影。它支持许诺和异步/等待功能:
const phantom = require('phantom');
(async function() {
const instance = await phantom.create();
const page = await instance.createPage();
await page.on('onResourceRequested', function(requestData) {
console.info('Requesting', requestData.url);
});
const status = await page.open('https://stackoverflow.com/');
const content = await page.property('content');
console.log(content);
await instance.exit();
})();当然,您可以从命令行启动PhantomJS并向其传递必要的参数:
phantomjs script.js https://stackoverflow.com然后用system.args在脚本中接收它们
var system = require('system');
var args = system.args;
if (args.length === 1) {
console.log('Try to pass some arguments when invoking this script!');
} else {
args.forEach(function(arg, i) {
console.log(i + ': ' + arg);
});
}请注意,您使用page.open错误,回调函数签名中没有data变量。如果您想获取页面的所有内容,请参考page.content变量:
page.open('http://phantomjs.org', function (status) {
var content = page.content;
console.log('Content: ' + content);
phantom.exit();
});https://stackoverflow.com/questions/50152263
复制相似问题