利用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,贴图解释:

 举例我要截图百度首页,那么在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);

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值