利用phantomjs工具完成网页截图

1、PhantomJS是什么?

  PhantomJS是一个基于webkit的JavaScript API。它使用QtWebKit作为它核心浏览器的功能,使用webkit来编译解释执行JavaScript代码。任何你可以在基于webkit浏览器做的事情,它都能做到。它不仅是个隐形的浏览器,提供了诸如CSS选择器、支持Web标准、DOM操作、JSON、HTML5、Canvas、SVG等,同时也提供了处理文件I/O的操作,从而使你可以向操作系统读写文件等。PhantomJS的用处可谓非常广泛,诸如网络监测、网页截屏、无需浏览器的 Web 测试、页面访问自动化等。

2、PhantomJS的安装

      请参考 https://blog.csdn.net/hacker_lees/article/details/76972880

3、PhantomJS的使用?(本文主要讲PhantomJS的截图功能使用)

     首先听它的名字就知道这个东西和javascript脱不了关系,需要创建一个js脚本来调用执行它的API,贴图解释:

利用phantomjs工具完成网页截图_第1张图片

 举例我要截图百度首页,那么在window下需要在dos执行 :

 phantomjs.exe request.js "https://www.baidu.com" "44a63072-4a3b-4829-bc72-a5b9b1dca9fa.png"

两个参数分别对应上图的param.url和param.pic,截图成功保存

4、分享下完成过程中踩到的坑

     a.Linux(centos)下执行如果报 cannot open shared object file之类的错误请用yum安装服务

         yum install libXext libXrender fontconfig libfontconfig.so.1

     b.Linux下在phantomjs所在目录执行如果报找不到该命令之类的错误,命令前加上./,如:

        ./phantomjs.exe request.js "https://www.baidu.com" "44a63072-4a3b-4829-bc72-a5b9b1dca9fa.png"

     c.Linux下截好的图中文字体乱码不显示请安装服务:

   yum install bitmap-fonts bitmap-fonts-cjk

  d.如果截图页面很长,有的图片不显示,八成是因为该图片需要滚动条下拉触发加载,有很多解决办法,我用的是调大浏览器视图并延迟截图:

         page.viewportSize = {width:4800, height:24000};

         page.render(param.pic);
                    phantom.exit();
                }), 10*1000);

你可能感兴趣的:(利用phantomjs工具完成网页截图)