Linux/Centos下安装部署phantomjs 及使用

Linux安装Phantomjs生成Echarts图片 Linux安装Phantomjs生成Echarts 阅读详情

文章转载自:http://www.cnblogs.com/10-22/articles/4383196.html

PhantomJS 是一个基于 WebKit 的服务器端 JavaScript API。它全面支持web而不需浏览器支持,其快速,原生支持各种Web标准: DOM 处理, CSS 选择器, JSON, Canvas, 和 SVG。 PhantomJS 可以用于 页面自动化 , 网络监测 , 网页截屏 ,以及无界面测试等

一.安装:

获取安装包,并解压:

 #mkdir ~/bin/

 #cd ~/bin/

 #wget https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-1.9.7-linux-x86_64.tar.bz2

 #tar -xjvf phantomjs-1.9.7-linux-x86_64.tar.bz2

将可执行文件放入系统路径: 

 #sudo ln -s ~/bin/phantomjs-1.9.7-linux-x86_64/bin/phantomjs /usr/local/bin/phantomjs

安装依赖——fontconfig和freetype: 

 #yum install fontconfig freetype2

在终端下测试Phantomjs。你应该会看到如下输出:

 #phantomjs -v

1.9.7

 #cd /root/bin/phantomjs-1.9.7-linux-x86_64/bin

新建脚本,并确认截图是否OK:

 #vi a.js

1 var page = require(‘webpage’).create();
2 page.open(‘https://www.baidu.com/‘, function () {
3 page.render(‘test/example.png’);
4 phantom.exit();
5 });
保存后进行截图测试 

 #phantomjs a.js

完成后会出现一个test文件夹,在文件夹内有个图片

查看图片,显示乱码。

解决方案,安装字体。

 #yum install bitmap-fonts bitmap-fonts-cjk

再次执行截图

 #phantomjs a.js

查看图片,字体显示正常。

二.使用:

Hello, World!

新建一个包含下面两行脚本的文本文件:

 #vi hello.js

1 console.log(‘Hello, world!’);
2 phantom.exit();
将文件保存后执行:

 #phantomjs hello.js

输出结果为:Hello, world!

第一行将会在终端打印出字符串,第二行 phantom.exit 将退出运行。
在该脚本中调用 phantom.exit 是非常重要的,否则 PhantomJS 将根本不会停止。

脚本参数 – Script Arguments

Phantomjs如何传递参数呢?如下所示 :

1 phantomjs examples/arguments.js foo bar baz
其中的foo, bar, baz就是要传递的参数,如何获取呢:

复制代码
1 var system = require(‘system’);
2 if (system.args.length === 1) {
3 console.log(‘Try to pass some args when invoking this script!’);
4 } else {
5 system.args.forEach(function (arg, i) {
6 console.log(i + ‘: ’ + arg);
7 });
8 }
9 phantom.exit();
复制代码
它将输出 :

1 0: foo
2 1: bar
3 2: baz
页面加载 – Page Loading

通过创建一个网页对象,一个网页可以被加载,分析和渲染。

下面的脚本将示例页面对象最简单的用法,它加载 example.com 并且将它保存为一张图片, example.png 。

 #vi a.js

1 var page = require(‘webpage’).create();
2 page.open(‘https://www.baidu.com/‘, function () {
3 page.render(‘test/example.png’);
4 phantom.exit();
5 });
保存后进行截图测试 

 #phantomjs a.js

由于它的这个特性,PhantomJS 可以用来 网页截屏 ,截取一些内容的快照,比如将网页、SVG存成图片,PDF等,这个功能很牛X。

接下来的 loadspeed.js 脚本加载一个特殊的URL (不要忘了http协议) 并且计量加载该页面的时间。

复制代码
1 var page = require(‘webpage’).create(),
2 system = require(‘system’),
3 t, address;
4
5 if (system.args.length === 1) {
6 console.log(‘Usage: loadspeed.js ’);
7 phantom.exit();
8 }
9
10 t = Date.now();
11 address = system.args[1];
12 page.open(address, function (status) {
13 if (status !== ‘success’) {
14 console.log(‘FAIL to load the address’);
15 } else {
16 t = Date.now() - t;
17 console.log(‘Loading time ’ + t + ’ msec’);
18 }
19 phantom.exit();
20 });
复制代码
在命令行运行该脚本: 

1 phantomjs loadspeed.js http://www.google.com
它输出像下面的东西:

1 Loading http://www.google.com Loading time 719 msec

代码运算 – Code Evaluation

要想在网页的上下文中对JavaScript 或 CoffeeScript 进行运算,使用 evaluate()方法。代码是在“沙箱”中运行的,它没有办法读取在其所属页面上下文之外的任何JavaScript对象和变量。 evaluate() 会返回一个对象,然而它仅限制于简单的对象并且不能包含方法或闭包。

这有一个示例来显示网页标题:

复制代码
1 var page = require(‘webpage’).create();
2 page.open(url, function (status) {
3 var title = page.evaluate(function () {
4 return document.title;
5 });
6 console.log(‘Page title is ’ + title);
7 });
复制代码
任何来自于网页并且包括来自 evaluate() 内部代码的控制台信息,默认不会显示的。要重写这个行为,使用 onConsoleMessage 回调函数,前一个示例可以被改写成:

复制代码
1 var page = require(‘webpage’).create();
2 page.onConsoleMessage = function (msg) {
3 console.log(‘Page title is ’ + msg);
4 };
5 page.open(url, function (status) {
6 page.evaluate(function () {
7 console.log(document.title);
8 });
9 });
复制代码
DOM操作 – DOM Manipulation

由于脚本好像是一个Web浏览器上运行的一样,标准的DOM脚本和CSS选择器可以很好的工作。这使得PhantomJS适合支持各种 页面自动化任务 。

下面的 useragent.js 将读取 id 为myagent的元素的 textContent 属性:

复制代码
1 var page = require(‘webpage’).create();
2 console.log(‘The default user agent is ’ + page.settings.userAgent);
3 page.settings.userAgent = ‘SpecialAgent’;
4 page.open(‘http://www.httpuseragent.org‘, function (status) {
5 if (status !== ‘success’) {
6 console.log(‘Unable to access network’);
7 } else {
8 var ua = page.evaluate(function () {
9 return document.getElementById(‘myagent’).textContent;
10 });
11 console.log(ua);
12 }
13 phantom.exit();
14 });
复制代码
上面示例同样提供了一种自定义 user agent 的方法。

使用JQuery及其他类库:

复制代码
1 var page = require(‘webpage’).create();
2 page.open(‘http://www.sample.com‘, function() {
3 page.includeJs(“http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js“, function() {
4 page.evaluate(function() {
5 $(“button”).click();
6 });
7 phantom.exit()
8 });
9 });
复制代码
网络请求及响应 – Network Requests and Responses

将一个页面从一台远程服务器请求一个资源的时候,请求和响应均可以通过 onResourceRequested 和 onResourceReceived 回调方法追踪到。示例 netlog.js :

复制代码
1 var page = require(‘webpage’).create();
2 page.onResourceRequested = function (request) {
3 console.log(‘Request ’ + JSON.stringify(request, undefined, 4));
4 };
5 page.onResourceReceived = function (response) {
6 console.log(‘Receive ’ + JSON.stringify(response, undefined, 4));
7 };
8 page.open(url);
复制代码
获取如何把该特性用于HAR 输出以及基于YSlow的性能分析的更多信息,请参阅 网络监控页面 。

华为路由器静态路由配置实战:从零搭建企业级网络环境(含常见错误排查) 本文以真实企业组网案例为基础,详细解析华为路由器静态路由的实战配置流程。内容涵盖从网络拓扑规划、IP地址分配到具体的`ip route-static`命令配置,并重点讲解了缺省路由、浮动路由等进阶应用。文章还提供了系统化的排错指南,帮助网络工程师规避回程路由缺失、子网掩码错误等常见问题,是掌握企业级网络搭建与维护的实用指南。 阅读详情

相关推荐

WhatsApp协议算法

我想其实有很多人还不太了WhatsApp群控,简单来说,它和我们常使用的微信聊天软件是类似的,只不过它是基于通讯录的,操作起来比较简单便捷,所以现在有很多国家都喜欢用WhatsApp。一般情况下,筛号不会造成账号被封的情况,但是呢,如果筛号的频率太快,就会被系统限制筛号能力,不再返回筛号结果,所以,筛号数量和速度一定要控制好。前天逛街突然灵光一现,为什么不试试多路访问呢,简单来说就是信道复用技术,马上跑回家,调取接口,接入通道,导入已经转换成协议的账号,成功登录!

2403_87755661的博客 1943

Linux环境phantomjs安装,使用,常见问题

这个问题是因为Ubuntu 22.04 使用新的 OpenSSL 版本 3.0.2 而不是旧的 OpenSSL 版本 1.1.1。这些 OpenSSL 版本不完全向后兼容,所以这就是为什么您在 PhantomJS 尝试自动配置 SSL/TLS 设置时看到此错误的原因。的文章,不过是基于windows环境的使用与运行的,那Linux环境应该怎么使用。

qq1328585964的博客 8127

金融风控实战:用Python从零搭建贷款违约预测模型(附完整数据集)

本文详细介绍了如何使用Python从零构建金融风控中的贷款违约预测模型,涵盖数据清洗、特征工程、模型构建与评估等全流程。通过实战案例展示逻辑回归、XGBoost和LightGBM三大算法的对比,特别强调AUC-ROC指标在金融风控中的重要性,并附完整数据集和代码实现。

weixin_29175469的博客 241

linux安装Phantomjs详细教程

首先下载安装包,其次解压安装包,建立软连接,最后验证是否安装成功

一把村雨的博客 1092

ARIMA模型的R实现

1.模型简介 ARIMA模型,全称差分自回归移动平均模型。可以看作是差分运算和ARMA模型的结合。主要是针对具有线性趋势的非平稳的时间序列,来进行建模预测。 ARIMA模型的形式如下: Φ(B)∇

heirenmin的博客 1万+

C# Log4Net不输出日志的解决方法

log4net是一个流行的 .NET 日志框架,用于记录应用程序的日志信息。如果你在使用log4net。

精通搬砖,资深技术砖家,在软件开发,人工智能,设备开发等领域都有研究。商业合作&交流学习可私信联系。 1264

Linux安装Phantomjs

PhantomJS是一个可编程的无头浏览器. 无头浏览器:一个完整的浏览器内核,包括js解析引擎,渲染引擎,请求处理等,但是不包括显示和用户交互页面的浏览器。 1,页面自动化测试:希望自动的登陆网站并做一些操作然后检查结果是否正常。 2,网页监控:希望定期打开页面,检查网站是否能正常加载,加载结果是否符合预期。加载速度如何等。 3,网络爬虫:获取页面中使用js来下载和渲染信息,或者是获取链接处使用js来跳转后的真实地址。 Linux下安装phantomjs 1,下载 wget https://bitbuck

qq_45273160的博客 2315

大模型安全研究论文整理 2026年版

知乎博主小红书博主GitHub数据集参考: 大模型越狱指令 (harmful questions) 数据集整理会思考的大模型更不听话,我的豆包失控了…让QwQ思考模型-不思考的小技巧qwen3的致命幻觉!大模型微调所有大模型都在讨好人类不要思考过程,推理模型能力能够更强丨UC伯克利等最新研究o3/o4-mini幻觉暴增2-3倍!OpenAI官方承认暂无法解释原因UC伯克利:让推理模型少思考,准确率反而更高了!一句话让DeepSeek思考停不下来,北大团队:这是针对AI的DDoS攻击慢思考准确率反降30%!普

CSPhD-winston的博客 2054

Linux/Centos下安装部署phantomjs

PhantomJS是一个基于WebKit的服务器端JavaScriptAPI。它全面支持web而不需浏览器支持,其快速,原生支持各种Web标准: DOM 处理, CSS 选择器, JSON, Canvas, 和 SVG。PhantomJS可以用于页面自动化,网络监测,网页截屏,以及无界面测试等 安装: 获取安装包,并解压:  #mkdir ~/bin/...

weixin_30632089的博客 406

2025年华为杯D题:低空湍流监测及最优航路规划思路与Matlab实现

2025年华为杯D题:低空湍流监测及最优航路规划思路与Matlab实现

前程算法屋的博客 772

Python 对接钉钉获取员工上一篇日报或周报内容

摘要:本文介绍使用Python对接钉钉API获取员工日报/周报的方法。首先需创建钉钉应用并开通日志权限,获取员工UserID。通过获取AccessToken进行鉴权,调用topapi/report/list查询日志记录,筛选最新日报/周报后,使用topapi/report/details获取详细内容。需注意权限控制、时间范围筛选和模板匹配等问题。文末提供完整代码示例,并建议扩展自动化触发、数据存储等功能。该方法适用于企业自动化获取员工工作日志的场景。

从技术实践立足,从项目管理方法论延伸思考 814

Centos7 安装PhantomJS

1.下载地址:http://phantomjs.org/download.html 2.文件名:phantomjs-2.1.1-linux-x86_64.tar.bz2 # 下载好后进行解压(由于是bz2格式,要先进行bzip2解压成tar格式,再使用tar解压) bzip2 -d phantomjs-2.1.1-linux-x86_64.tar.bz2 # 再使用tar进行

微步的博客 4103

5ZCM6ZGrVDllSFLkv6Hmga/ljJbnrqHnkIbns7vnu58= GetFlowDropDown SQL注入

5ZCM6ZGrVDllSFLkv6Hmga/ljJbnrqHnkIbns7vnu58=、eHR/OA一体化智慧云平台、智慧一卡通云平台、行业软件开发与定制、智慧企业管理信息化咨询与项目服务为核心业务的顾问式管理咨询和软件个性定制开发的高科技股份集团公司。同鑫T9eHR信息华管理系统存在SQL注入漏洞,攻击者可通过该漏洞上传shell。关闭互联网暴露面或接口设置访问权限。利用sqlmap进行shell。

iSee857的博客 703

phantomjs安装 Centos7

一、安装PhantomJS(linux环境安装)将PhantomJS下载在/usr/local/src/packet/目录下(这个看个人喜好)操作系统:CentOS 7 64-bit1.下载地址:http://phantomjs.org/download.html2.文件名:phantomjs-2.1.1-linux-x86_64.tar.bz2# 下载好后进行解压(由于是bz2格式,要先进行bz...

咸蛋超人的优快云博客 366

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

phantomjs+linux+pdf,phantomjs导出html到pdf的方法总结

最近要为我们的文章服务做一个转pdf的功能。经过比较,我觉得phantomjs是转化比较好的。现在讲讲如何使用。环境centos x86_64下载可以到官网下载: 官网或者wget也可以:安装// 解压tar xjf /tmp/phantomjs-2.1.1-linux-x86_64.tar.bz2 -C /usr/local/// 重命名mv /usr/local/phantomjs-2.1.1...

weixin_28711397的博客 168

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Linux(Centos) PhantomJS not found on PATH

Linux(Centos) PhantomJS not found on PATH 问题背景 最近使用jenkins自动部署项目。 想了想前端项目也用jenkins部署了一下。 但是在install的时候出现了如下 错误: 问题分析 错误错误日志不难看出。 依赖文件已经下载好了,问题出在bz2解压上 bzip2 : Cannot exec : No such file or director...

文涛的博客 1639

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

phantomjs 部署到linux服务器后截图中文乱码问题

[场景问题] 在本地环境通过phantomjs截图中文地名正常显示,但是部署到服务器后出现下图情况,所有地名为方框显示。 ​​ [思考] 经过排查定位问题,程序在windows环境下截图正常,但是部署到服务器后无法正常截图中文字体,服务器程序截图数字正常显示,初步定位问题是服务器缺少字体 [行动/反馈] 查看字体,确认是否拥有宋体字体: [root@41linsdo...

dgg25143的博客 564

Linux/CentOS环境下如何安装和配置PhantomJS工作环境

PhantomJS 是一个基于WebKit的服务器端 JavaScript API。它全面支持web而不需浏览器支持,其快速,原生支持各种Web标准: DOM 处理, CSS 选择器, JSON, Canvas, 和 SVG。PhantomJS可以用于页面自动化,网络监测,网页截屏,以及无界面测试等。#下载PhantomJS安装包 wget https://bitbucket.org/ari...

weixin_30666753的博客 168

phantomjs+linux+pdf,phantomjs导出html到pdf的方法实例分享

最近要为我们的文章服务做一个转pdf的功能。经过比较,我觉得phantomjs是转化比较好的。本文主要介绍了phantomjs导出html到pdf的方法总结,需要的朋友可以参考下,希望能帮助到大家。环境centos x86_64下载可以到官网下载: 官网或者wget也可以:wget -P /tmp/ https://bitbucket.org/ariya/phantomjs/downloads/p...

weixin_34005314的博客 228
上一篇: Linux yum 安装MariaDB
下一篇: Hadoop Balancer运行速度优化
Ronney-Hua
博客等级 码龄10年 48粉丝 74原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值