标签: phantomjs

由gmail代理阻止的SVG图像

似乎图像的新gmail代理不能与SVG一起使用(如果在新选项卡中打开代理URL,则会出现404错误.)

我无法找到有关支持/阻止的文件类型的任何文档.在gmail中的SVG是否适用于其他任何人?

我能想到的唯一解决方法是使用PhantomJS在服务器上生成一个svg - 还有其他任何选项吗?

背景:

这适用于发送每日摘要电子邮件的webapp,显示过去24小时内的图表(因此svg每天都不同,在电子邮件中显示它会让用户省去点击应用程序的麻烦.)

我知道SVG图像在某些电子邮件客户端中不起作用,但它可以工作95%,其余的仍然可以点击进入webapp.

它在gmail中运行良好,直到本月早些时候代理更改(该月底刚刚推出到Google Apps帐户.)

proxy gmail svg phantomjs

30
推荐指数
1
解决办法
9634
查看次数

如何在PhantomJS中使用ES6

有没有办法使用ES6和模块与PhantomJS?

我可以使用Babel将每个文件从ES6转换为ES5,但是维护并行树(ES6中的一个和ES5中的另一个)很难并且编写导入以要求ES5模块.我正在寻找一个更清洁的解决方案.

我可以删除所有导入和导出代码,将模块连接在一起,将结果转换为单个文件,然后通过PhantomJS运行,但我更愿意使用导入和导出.

我尝试使用Browserify和babelify转换将ES6依赖树转换为单个ES5文件,但Browserify无法找到PhantomJS提供的模块webpage.我已经尝试通过放入我的忽略这些模块package.json:

"browser": {
  "webpage": false
}
Run Code Online (Sandbox Code Playgroud)

但导入webpage返回一个空对象而不是PhantomJS模块.

是否有一种干净的方式来使用PhantomJS的ES6模块?

phantomjs ecmascript-6

30
推荐指数
2
解决办法
2万
查看次数

phantomjs page.evaluate没有登录到控制台

我是PhantomJs的新手.刚查看了这个网站上的类似帖子.我的问题是为什么'foo'没有登录到控制台或打印?

var page = require('webpage').create()
var foo = 42;

function evaluate(page, func) {
    var args = [].slice.call(arguments, 2);
    var fn = "function() { return (" + func.toString() + ").apply(this, " + JSON.stringify(args) + ");}";
    return page.evaluate(fn);
}

page.open('http://google.com', function() {
  var foo = 42;
  evaluate(page, function(foo) {
  console.log(foo);
        },foo);

});
Run Code Online (Sandbox Code Playgroud)

phantomjs

29
推荐指数
3
解决办法
2万
查看次数

无法在Karma中安装phantomJS

WARN [config]: config.configure() is deprecated, please use config.set() instead.
WARN [plugin]: Cannot find plugin "karma-phantomjs".
  Did you forget to install it ?
  npm install karma-phantomjs --save-dev
INFO [karma]: Karma v0.10.2 server started at http://localhost:9018/
WARN [launcher]: Can not load "PhantomJS", it is not registered!
  Perhaps you are missing some plugin?
Run Code Online (Sandbox Code Playgroud)

得到这个错误.当运行npm install时,karma-phantomjs --save-dev会出错.

npm ERR! 404 'karma-phantomjs' is not in the npm registry.
Run Code Online (Sandbox Code Playgroud)

我安装了karma-phantomjs-launcher --save-dev但是在运行grunt watch时我仍然遇到错误.

其他人遇到这个问题?

phantomjs gruntjs karma-runner

29
推荐指数
3
解决办法
3万
查看次数

使用Node.js和XPath对页面进行高效解析

我正在使用Node.js进行一些网络抓取.我想使用XPath,因为我可以使用几种GUI半自动生成它.问题是我找不到有效地做到这一点的方法.

  1. jsdom非常慢.它在一分钟左右的时间内解析了500KiB文件,并且CPU负载全部,内存占用空间很大.
  2. 用于HTML解析的流行库(例如cheerio)既不支持XPath,也不暴露符合W3C的DOM.
  3. 显然,有效的HTML解析在WebKit中实现,因此使用phantomcasper将是一个选项,但那些需要以特殊方式运行,而不仅仅是node <script>.我不能依赖这种变化所暗示的风险.例如,找到如何运行node-inspector起来要困难得多phantom.
  4. Spooky是一个选项,但它足够多,所以它在我的机器上根本没有运行.

那么用XPath解析HTML页面的正确方法是什么?

html javascript xpath node.js phantomjs

29
推荐指数
2
解决办法
2万
查看次数

如何用npm安装PhantomJS v2

我正在尝试v2.0.0使用PhantomJS npm,在尝试了几种方法之后,我找不到一个可行的解决方案......

在NPM上最新版本是1.9.16,所以我在我的尝试中尝试了以下内容package.json:

  1. "phantomjs": "https://github.com/ariya/phantomjs/archive/2.0.0.tar.gz"

这给了我一个错误,因为package.jsongithub repo中没有这个版本.

  1. "phantomjs": "2.0.0"

这告诉我没有这个号码可用的版本.

我在这里错过了什么吗?

github node.js npm phantomjs

29
推荐指数
1
解决办法
4万
查看次数

phantomjs可以与node.js一起使用吗?

我想在我的node.js脚本中使用phantomjs.有一个phantomjs节点库..但不幸的是,作者使用这个奇怪的咖啡脚本代码来解释他在做什么:

phantom = require 'phantom'

phantom.create (ph) ->
  ph.createPage (page) ->
    page.open "http://www.google.com", (status) ->
      console.log "opened google? ", status
      page.evaluate (-> document.title), (result) ->
        console.log 'Page title is ' + result
        ph.exit()
Run Code Online (Sandbox Code Playgroud)

现在如果我直接用javascript使用phantomjs,它看起来像这样:

var page = require('webpage').create();
page.open(url, function (status) {
    var title = page.evaluate(function () {
        return document.title;
    });
    console.log('Page title is ' + title);
});
Run Code Online (Sandbox Code Playgroud)

所以基本上我正在尝试在普通的javascript中编写相当于上面第一段代码的代码(通过阅读咖啡脚本文档 ..这就是我所做的:

// file name: phantomTest.js

var phantom = require('phantom');

phantom.create(function(ph) {
    ph.createPage(function(page) {
        page.open('http://www.google.com', function(status) { …
Run Code Online (Sandbox Code Playgroud)

javascript jquery node.js coffeescript phantomjs

28
推荐指数
3
解决办法
4万
查看次数

如何在不同的casperjs进程之间保留cookie

这是一个关于如何将cookie从一个casperjs页面持久存储到另一个页面的问题.

所以基本上我得到一个nodejs文件,它生成casperjs作为工作人员来完成某些任务..一个是登录,一旦登录我将cookie存储在一个文件中.

当我产生下一个casper worker时..我希望它使用cookie而不必再次登录..这两种方法都失败了:

第一:当我产生工人capserjs时,我添加了--cookies-file =./ cookiefilename ie var child = spawn('casperjs',['scrape.js','--cookies-file=./'+cookieFileName]);

第二:在casperjs工作文件中..我让它读取并从文件中设置cookie即

var casper = require('casper').create();
var cookieFileName = 'monsterCookie.txt';

// grab cookies from file 
var fs = require('fs');
var utils = require('utils');
var cookies = fs.read(cookieFileName);

casper.page.setCookies(cookies); 

casper.start('domain/page.html', function() {
    //FAIL! cookies aren't used here
    this.debugHTML();
});

casper.run();
Run Code Online (Sandbox Code Playgroud)

笔记:

  1. 有人提到早些时候start从页面删除cookies吗?如果是这样我该怎么做呢?
  2. 我知道会话持久同一phantomjs页面对象中(见这里https://gist.github.com/abbood/5347252)和相同casperjs页面对象中的同样的情况(见这里https://gist.github.com/ abbood/5347287)
  3. 请记住,我将cookie存储在文件中(即根本没有任何json/cookie解析)..所以我的cookie文件看起来就像这样

[一般]饼干="@变体(\ 0\0\0\0x7F部分\ 0\0\0\x16QList\0\0\0\0\X1\0\0\0 \n\0\0\0YCNTR = LB; expires = Tue,09-Apr-2013 17:12:05 GMT; domain = …

cookies session node.js phantomjs casperjs

28
推荐指数
2
解决办法
2万
查看次数

Angular2 SEO - 如何使角度2应用程序可抓取

我正在使用Angular-Meteor框架构建一个Angular 2应用程序.

我想实现快速和一致的索引谷歌和其他搜索引擎,让Facebook的分享者和其他刮削器生成我的JS生成内容的预览.

通常,SPA使用PhantomJS呈现页面服务器端并将静态HTML发送到客户端.

当然,我可以生成PhantomJS自己,当我拦截_escaped_fragment_或当我看到谷歌或刮刀用户代理,但我总是经历了内存泄漏,并直接与大流量的网站产卵PhantomJS当孤儿幻影情况下(我用的NodeJS和这个模块).

对于Angular 1应用程序,我曾经使用像Angular-SEO这样的角度模块来解决这个问题,但似乎很难将这样的模块转换为角度2.

我还没有找到任何合适的Angular 2模块.我应该自己构建它,还是有任何其他好方法来实现这一点?

seo node.js phantomjs angular2-meteor angular

28
推荐指数
2
解决办法
2万
查看次数

在MacOs 10.11 El Captian上安装PhantomJS

升级到10.11(El Capitan)后,我无法在我的macbook中安装phantomJs.

每当我尝试使用自制程序安装它时它会给我这个错误:

$ brew install phantomjs
phantomjs: OS X Yosemite or older is required.
Error: An unsatisfied requirement failed this build.
Run Code Online (Sandbox Code Playgroud)

javascript macos homebrew phantomjs

27
推荐指数
5
解决办法
2万
查看次数