如何设置PhantomJS输出url的文本

时间:2016-06-22 00:10:48

标签: ruby phantomjs sinatra

我关注this tutorial并创建了正在创建网站的图片。我想要的是输出网站的文字而不是图像。

config.ru文件如下所示:

require 'sinatra/base'
require 'digest/md5'

class App < Sinatra::Base

  get '/' do
    return "to specifiy the rendered URL use \"?url=&lt;some url&gt;\"" unless params[:url]
    digest = Digest::MD5.hexdigest(params[:url])
    system(File.expand_path("~/app-root/data/phantomjs/bin/phantomjs"), File.expand_path("~/app-root/data/phantomjs/examples/rasterize.js"), params[:url], "public/#{digest}.png")
    digest
  end

end

run App

我找到了输出内容的示例,这里是代码content.js

var webPage = require('webpage');
var page = webPage.create();
page.open('http://google.com', function () {
    console.log(page.content);
    phantom.exit();
});

所以有两个问题:

  1. 如何打印page.content
  2. 如何将url查询字符串参数传递给content.js文件?

1 个答案:

答案 0 :(得分:0)

要使用console.log,您需要编写一个特殊的侦听器 - 请参阅onConsoleMessage。顺便提一下,有类似的东西可以看到错误。

这些文档给出了一个例子:

var webPage = require('webpage');
var page = webPage.create();

page.onConsoleMessage = function(msg, lineNum, sourceId) {
  console.log('CONSOLE: ' + msg + ' (from line #' + lineNum + ' in "' + sourceId + '")');
};

为了将参数传递给幻像脚本,我搜索了现有的StackOverflow问题并找到了phantomJS - Pass Argument to the JS File。似乎这样做的方法是使用命令行参数。有关详细信息,请参阅phantom docs on args

似乎您的system调用正常,但在幻像脚本中,您需要使用args来读取传递的参数。