要利用 NodeJS 和 PhantomJS 抓取网站页面信息以及截图,需要经过以下步骤:
安装 NodeJS 和 PhantomJS
首先需要在本地电脑安装 NodeJS 和 PhantomJS。NodeJS 安装可以前往官网下载对应版本,PhantomJS 安装可以通过以下命令下载到本地:
brew install phantomjs
# 或者
npm install phantomjs -g
编写代码
抓取网站页面信息
要抓取网站页面信息,可以使用 PhantomJS 提供的命令行工具 phantomjs
,并通过 NodeJS 的 child_process
模块来执行命令行的操作。以下是一个例子:
const { spawn } = require('child_process');
const url = 'https://www.baidu.com';
const args = [
'loadspeed=1',
'--disk-cache=true',
'--ignore-ssl-errors=true',
path.join(__dirname, 'phantomjs-script.js'),
url
];
const child = spawn('phantomjs', args);
let stdout = '';
let stderr = '';
child.stdout.on('data', (data) => {
stdout += data.toString();
});
child.stderr.on('data', (data) => {
stderr += data.toString();
});
child.on('close', (code) => {
console.log(`child process exited with code ${code}`);
console.log(`stdout: ${stdout}`);
console.log(`stderr: ${stderr}`);
});
在 phantomjs-script.js
文件中,可以编写需要执行的 PhantomJS 脚本,例如:
var page = require('webpage').create(),
system = require('system'),
address;
if (system.args.length === 1) {
console.log('Usage: phantomjs-script.js <some URL>');
phantom.exit(1);
} else {
address = system.args[1];
page.onConsoleMessage = function(msg) {
console.log(msg);
};
page.open(address, function(status) {
if (status === 'success') {
page.evaluate(function() {
console.log(document.title);
console.log(document.querySelector('header').textContent);
});
phantom.exit();
}
});
}
这个脚本会打开 system.args[1]
上指定的 URL,并输出网站的标题和头部内容。执行 NodeJS 脚本后,会得到类似以下的输出:
child process exited with code 0
stdout: 苏宁易购-苏宁易购,购物上苏宁,省钱又放心 !
苏宁超市 商用家电 苏宁易购易购到家 苏宁易贷 您好, 请登录苏宁 您好, 欢迎来到苏宁易购 搜索中心
商品分类 全部商品分类
关键字
筛选
苏宁自营
品牌
价格
确定
进口商品
国际名品
UV
15天包换
手机
相机
电脑办公
家用电器
个人护理
家居家装
运动户外
母婴玩具
美妆洗护
食品营养
...
网站截图
要在 NodeJS 中实现网站截图,可以使用 phantomjs-bridge
包,它提供了简化的 API 来执行 PhantomJS 脚本。以下是一个例子:
const phantom = require('phantomjs-bridge');
const server = phantom.create();
server.open('https://www.example.com')
.then(() => {
return server.screenshot({
dest: 'example.png',
fullPage: true
});
})
.then((filepath) => {
console.log(filepath);
server.exit();
});
这个脚本会打开指定的 URL,并将整个页面截图保存到 example.png
文件中。执行 NodeJS 脚本后,会得到 example.png
图片文件。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:利用NodeJS和PhantomJS抓取网站页面信息以及网站截图 - Python技术站