欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

phantomJS区域截图及保存文本的简单例子

程序员文章站 2022-06-01 16:58:07
...

phantomJS区域截图只需要指定截图的上,左的起始位置,以及截图的宽高即可。

文本的处理,只需要在page.evaluate()函数中,通过dom选择器,选择到需要输出的文字内容即可,同时也可以写入本地文件中。

以csdn博客首页为例,来进行一个简单的截图和文本提取,比如需要首页的第一篇博客的截图和标题,代码如下:

var page = require('webpage').create();
var fs = require('fs');
//要打印的url地址
var address = 'http://blog.csdn.net/';
//存储文件路径和名称
var outputPng = './csdn/img.png';
var outputTxt = './csdn/data.txt'
//设置长宽
page.viewportSize = { width: 1280, height: 800 };

page.open(address, function(status) {
	if(status !== 'success') {
		console.log('Unable to load the address!');
		phantom.exit();
	} else {

		//截图的偏移和宽高
		page.clipRect = {
			top: 186,
			left: 101,
			width: 855,
			height: 207
		};

		text = page.evaluate(function() {
			var title = document.getElementsByClassName('blog_list_wrap')[0]
						.getElementsByClassName('csdn-tracking-statistics')[0].getElementsByTagName('a')[0].innerText;
			return title;
		});
		//此文本可以通过phantomjs指令输出到文件
		console.log("获得的分类统计数据为:"+ text);
		fs.write(outputTxt, text, 'w');
		console.log("获得的分类统计数据已保存至文件!");
		
		console.log("截图中......");
		page.render(outputPng);
		console.log("截图已保存对应路径!");
		
		phantom.exit();
	}
});
执行控制台打印日志为:

[aaa@qq.com]# phantomjs csdntest.js 
获得的分类统计数据为:Java 常用工具类 Collections 源码分析
获得的分类统计数据已保存至文件!
截图中......
截图已保存对应路径!
最终获得的截图及TXT文件为:

phantomJS区域截图及保存文本的简单例子


截图区域的选择,可以通过dom定位后,返回4个数值即可:

length = page.evaluate(function () {
	var div = document.getElementById('bar-chart-container'); //要截图的div的id
	var bc = div.getBoundingClientRect();
	var top = bc.top;
	var left = bc.left;
	var width = bc.width;
	var height = bc.height;
	window.scrollTo(0, 10000);//滚动到底部
	return [top, left, width, height];
});
console.log(length);
page.clipRect = { //截图的偏移和宽高
	top: length[0],
	left: length[1],
	width: length[2],
	height: length[3]
};