大佬教程收集整理的这篇文章主要介绍了javascript – Phantomjs不执行page.evaluate函数的功能,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
这是我的代码
facebookScraper.prototype.scrapeFeed = function (url,cb) { f = ':scrapeFeed:'; var evaluator = function (s) { var posts = []; for (var i = 0; i < FEED_ITEMS; i++) { log.info(__filename+f+' iterating step ' + i); log.info(__filename+f+util.inspect(document,false,null)); } return { news: posts }; } phantom.create(function (ph) { ph.createPage(function (page) { log.fine(__filename+f+' opening url ' + url); page.open(url,function (status) { log.fine(__filename+f+' opened site? ' + status); setTimeout(function() { page.evaluate(evaluator,function (result) { log.info(__filename+f+'Scraped feed: ' + util.inspect(result,null)); cb(result,ph); }); },5000); }); }); }); };
输出我得到:
{"level":"fine","message":"PATH/fb_regular.js:scrapeFeed: opening url <URL> ","timestamp":"2012-09-23T18:35:10.151Z"} {"level":"fine","message":"PATH/fb_regular.js:scrapeFeed: opened site? success","timestamp":"2012-09-23T18:35:12.682Z"} {"level":"info","message":"PATH/fb_regular.js:scrapeFeed: Scraped feed: null","timestamp":"2012-09-23T18:35:12.687Z"}
所以,如你所见,它用空参数调用幻影回调函数(评估函数中的第二个参数),但是它不执行第一个参数(我的评估器函数,它打印迭代步骤X).
任何人都知道问题是什么?
page.onConsoleMessage = function (msg) { console.log(msg); };
因为结果不可用:page.evaluate函数接受这样的参数 – 第一个是要执行的函数,其余的作为输入传递给该函数.结果直接返回:
var title = page.evaluate(function (s) { return document.querySelector(s).innerText; },'title'); console.log(title);
以上是大佬教程为你收集整理的javascript – Phantomjs不执行page.evaluate函数的功能全部内容,希望文章能够帮你解决javascript – Phantomjs不执行page.evaluate函数的功能所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。