一、优点
puppeteer
是一个Nodejs
的库,支持调用Chrome的API来操纵Web
,相比较Selenium
或是PhantomJs
,它最大的特点就是它的操作Dom
可以完全在内存中进行模拟既在V8
引擎中处理而不打开浏览器,而且关键是这个是Chrome团队在维护,会拥有更好的兼容性和前景。
二、安装
npm i puppeteer --save
注意点,如果下载chrome的时候报错,可以更换镜像源
npm install -g cnpm --registry=https://registry.npm.taobao.org
cnpm i puppeteer // 安装在项目下即可
三、初步试用
const puppeteer = require('puppeteer');
const fs = require("fs");
function write_file(data) {
fs.writeFile("./a.html",data,function(err){
if (err){
console.log("写文件失败");
}else{
console.log("写入成功");
}
})
}
(async () => {
const browser = await puppeteer.launch({
headless: false,
// headless: false,//不使用无头chrome模式
executablePath: 'E:\\spider\\pup_spider\\node_modules\\_puppeteer@1.10.0@puppeteer\\.local-chromium\\win64-599821\\chrome-win\\chrome.exe',//path to your chrome
});
const page = await browser.newPage();
await page.goto('http://www.baidu.com');
// await page.screenshot({"./": 'example.png'});
console.log("open page");
const result = await page.content();
write_file(result);
await browser.close();
})();
个人感受,不论是流畅度还是控制元素,都比selenium舒服,喜欢的朋友可以尝试一下。