基于linnux+phantomjs实现生成图片格式的网页快照

安装扩展:
  (1)下面是我在linux上的安装过程,如果没有安装git请先yum install git
    安装casperjs

代码如下:

cd /
    git clone git://github.com/n1k0/casperjs.git
    cd casperjs
    ln -sf /casperjs/bin/casperjs /usr/local/bin/casperjs  //可以忽略 实际执行中php是执行 /casperjs/bin/casperjs

(2)安装phantomjs,下载地址:http://phantomjs.org/download.html
       下载后操作很简单,直接把解压好的\bin\phantomjs移动到\usr\local\bin\phantomjs就可以了。\
       测试phantomjs --version 有结果不报错,说明安装OK
 
    (3)安装字体
      1. 首先获得一套“微软雅黑”字体库(Google一下一大把),包含两个文件msyh.ttf(普通)、msyhbd.ttf(加粗);
      2. 在/usr/share/fonts目录下建立一个子目录,例如win,命令如下:

代码如下:

# mkdir /usr/share/fonts/win

3. 将msyh.ttf和msyhbd.ttf复制到该目录下,例如这两个文件放在/root/Desktop下,使用命令:

代码如下:

# cd /root/Desktop
 # cp msyh.ttf msyhbd.ttf  /usr/share/fonts/win/

4. 建立字体索引信息,更新字体缓存:

代码如下:

# cd /usr/share/fonts/win
          # mkfontscale  (如果提示 mkfontscale: command not found,需自行安装 # yum install mkfontscale )
          # mkfontdir
          # fc-cache    (如果提示 fc-cache: command not found,则需要安装# yum install fontconfig )

至此,字体已经安装完毕!

<?php
  if (isset($_GET['url']))
  {
    set_time_limit(0); 

    $url = trim($_GET['url']);
    $filePath = md5($url).'.png';
    if (is_file($filePath))
    {
      exit($filePath);
    } 

    //如果不加这句就会报错“Fatal: [Errno 2] No such file or directory; did you install phantomjs?”,详情参考http://mengkang.net/87.html
    putenv("PHANTOMJS_EXECUTABLE=/usr/local/bin/phantomjs");
    $command = "phantomjs phantomjs.js {$url} {$filePath}";
    @exec($command); 

    exit($filePath);
  }
?> 

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="keywords" content="" />
<meta name="description" content="" />
<title>快照生成</title>
<script src="http://code.jquery.com/jquery-1.8.3.min.js"></script>
<style>
* {margin: 0; padding: 0; } form {padding: 20px; } div {margin: 20px 0 0; } input {width: 200px; padding: 4px 2px; } #placeholder {display: none; }
</style>
</head> 

<body>
  <form action="" id="form">
    <input type="text" id="url" />
    <button type="submit">生成快照</button> 

    <div>
      <img src="" alt="" id="placeholder" />
    </div>
  </form>
  <script>
  $(function(){
    $('#form').submit(function(){
      if (typeof($(this).data('generate')) !== 'undefined' && $(this).data('generate') === true)
      {
        alert('正在生成网站快照,请耐心等待...');
        return false;
      } 

      $(this).data('generate', true);
      $('button').text('正在生成快照...').attr('disabled', true); 

      $.ajax({
        type: 'GET',
        url: '?',
        data: 'url=' + $('#url').val(),
        success: function(data){
          $('#placeholder').attr('src', data).show();
          $('#form').data('generate', false);
          $('button').text('生成快照').attr('disabled', false);
        }
      }); 

      return false;
    });
  });
  </script>
</body>
</html>
var page = require('webpage').create();
var args = require('system').args; 

var url = args[1];
var filename = args[2]; 

page.open(url, function () {
  page.render(filename);
  phantom.exit();
});

以上所述就是本文的全部内容了,希望大家能够喜欢。

(0)

相关推荐

  • 利用NodeJS和PhantomJS抓取网站页面信息以及网站截图

    利用PhantomJS做网页截图经济适用,但其API较少,做其他功能就比较吃力了.例如,其自带的Web Server Mongoose最高只能同时支持10个请求,指望他能独立成为一个服务是不怎么实际的.所以这里需要另一个语言来支撑服务,这里选用NodeJS来完成. 安装PhantomJS 首先,去PhantomJS官网下载对应平台的版本,或者下载源代码自行编译.然后将PhantomJS配置进环境变量,输入 $ phantomjs 如果有反应,那么就可以进行下一步了. 利用PhantomJS进行简

  • python基于phantomjs实现导入图片

    基于的phantomjs的自动化,会出现 1.flash不支持 2.部分基于view的按钮点不到,部分按钮是基于flash的(尤其是在于上传按钮) browser.find_element_by_xpath(".//*[@name='SWFUpload_0']").click() #点击上传按钮 sleep(2) autoit.control_set_text("", "[CLASS:Edit; INSTANCE:1]",tupian ) #上传

  • Phantomjs抓取渲染JS后的网页(Python代码)

    最近需要爬取某网站,无奈页面都是JS渲染后生成的,普通的爬虫框架搞不定,于是想到用Phantomjs搭一个代理. Python调用Phantomjs貌似没有现成的第三方库(如果有,请告知小编),漫步了一圈,发现只有pyspider提供了现成的方案. 简单试用了一下,感觉pyspider更像一个为新手打造的爬虫工具,好比一个老妈子,有时无微不至,有时喋喋不休. 轻巧的小工具应该更受人喜爱,我也怀着一点私心,可以带着我最爱的BeautifulSoup一块儿用,而不用再学PyQuery(pyspide

  • 使用phantomjs进行网页抓取的实现代码

    phantomjs因为是无头浏览器可以跑js,所以同样可以跑dom节点,用来进行网页抓取是再好不过了. 比如我们要批量抓取网页 "历史上的今天" 的内容.网站 对dom结构的观察发现,我们只需要取到 .list li a的title值即可.因此我们利用高级选择器构建dom片段 var d= '' var c = document.querySelectorAll('.list li a') var l = c.length; for(var i =0;i<l;i++){ d=d+

  • nodejs通过phantomjs实现下载网页

    功能其实很见简单,通过 phantomjs.exe 采集 url 加载的资源,通过子进程的方式,启动nodejs 加载所有的资源,对于css的资源,匹配css内容,下载里面的url资源 当然功能还是很简单的,在响应式设计和异步加载的情况下,还是有很多资源没有能够下载,需要根据实际情况处理下 首先当然是下载 nodejs 和 phantomjs 下面是 phantomjs.exe 执行的 down.js var page = require('webpage').create(), system

  • PhantomJS快速入门教程(服务器端的 JavaScript API 的 WebKit)

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

  • 基于linnux+phantomjs实现生成图片格式的网页快照

    安装扩展:   (1)下面是我在linux上的安装过程,如果没有安装git请先yum install git     安装casperjs 复制代码 代码如下: cd /     git clone git://github.com/n1k0/casperjs.git     cd casperjs     ln -sf /casperjs/bin/casperjs /usr/local/bin/casperjs  //可以忽略 实际执行中php是执行 /casperjs/bin/casperj

  • Java利用Phantomjs实现生成图片的功能

    今天,给大家分享一个Java后端利用Phantomjs实现生成图片的功能,同学们使用的时候,可以参考下! PhantomJS简介 首先,什么是PhantomJS? 根据官网介绍: PhantomJS is a command-line tool. -- 其实就是一个命令行工具. PhantomJS的下载地址: Windows:phantomjs-2.1.1-windows.zip Linux:phantomjs-2.1.1-linux-x86_64.tar.bz2;phantomjs-2.1.1

  • Python基于pillow库实现生成图片水印

    一.背景 平时工作中经常需要使用各种尺寸.格式的图片来做测试,每次从百度或者谷歌找图都非常麻烦,于是就想作为一个程序员怎么能被这个问题影响效率呢,一切程序可以做的事情都应该用程勋来做并提升效率,这才是我们编程的意义所在. 二.实现 于是就想实现一个web版的图片生成器,填颜色.尺寸.格式就可以生成指定的图片,Python的图像库肯定首选pillow,实现起来很简单,所以就不详细解释了,直接上代码: def generate_image(static_dir, image_type, width,

  • 基于jquery实现即时检查格式是否正确的表单

    现在很多网站的注册模块都可以实现即时检查格式是否正确,这样极大的增强了用户体验,对开发非常有利. 下面的代码是利用jquery实现了对一个表单字段格式的即时检查(包括字段长度.邮箱格式),同时在提交时,再次出发检查事件. 注意这个检查是keyup和focus上为主,利用这两个事件来触发blur(失去焦点)事件. <html> <head> <meta charset="utf-8" /> <title></title> <

  • 常见电子书格式及其反编译思路分析第1/3页

    声明:本文可能夹杂大量技术术语,如果您对此感到不快,请勿继续阅读.   本文仅仅讨论一些思路,不会提供相关源代码,最多也只提供源代码网站的链接.如果您对此有所不满,请勿继续阅读.  本文仅仅从技术角度讨论电子书反编译问题,请勿将之用于侵犯版权等等非法目的,或损害他人利益.如果您对此感到失望,请勿继续阅读.   本文版权归作者所有,转载前请先征得作者书面同意.   1. 前言  2. 常见电子书格式及其反编译思路     2.1 PDF格式     2.2 基于IE内核的电子书         2

  • 把网页中的(电话,qq等数字)生成图片的ASP程序

    作用:用ASP程序将页面中的电话号码生成图片格式. 复制代码 代码如下: <% Call Com_CreatValidCode(Request.QueryString("tel")) Public Sub Com_CreatValidCode(pTel) '----------禁止缓存 Response.Expires = 0 Response.AddHeader "Pragma","no-cache" Response.AddHeader

  • 基于HLS创建Golang视频流服务器的优缺点

    HLS 是 HTTP Live Streaming 的缩写,是苹果开发的一种基于 HTTP 的自适应比特率流媒体传输协议, 并于 2009 年. HLS 流媒体已经成为应用最广泛的实时视频协议.它是一种将流分解成基于文件小段的格式, 可以通过 HTTP 下载,HLS 可以通过标准的 HTTP 或代理服务器等,这和基于 UDP 的协议(例如 RTP)不同.既然 HLS 现在如此受欢迎,那么它有那些优点和缺点呢. 优点 应用广泛 首先,刚才已经提到过,HLS 是应用最惯犯的实时视频协议.虽然最初苹果

  • Python之——生成动态路由轨迹图的实例

    一.scapy简介与安装 scapy(http://www.secdev.org/projects/scapy/)是一个强大的交互式数据包处理程序,它能够对数据包进行伪造或解包,包括发送数据包.包嗅探.应答和反馈匹配等功能.可以用在处理网络扫描.路由跟踪.服务探测.单元测试等方面,本节主要针对scapy的路由跟踪功能,实现TCP协议方式对服务可用性的探测,比如常用的80(HTTP)与443(HTTPS)服务,并生成美观的路由线路图报表,让管理员清晰了解探测点到目标主机的服务状态.骨干路由节点所处

  • 流行的软件测试工具介绍

    英文原版书籍下载:https://bitbucket.org/xurongzhong/python-chinese-library/downloadss. 精品文章推荐: python 2.7 中文教程及自动化测试介绍 使用Python学习selenium测试工具 性能测试艺术 Java单元测试之模拟利器-使用PowerMock进行Mock测试 网络工具ATC 主页 http://facebook.github.io/augmented-traffic-control/ 代码托管:https:/

随机推荐