puppeteer_chromeheadless的使用(1)

2018-01-30 10:50:15来源:segmentfault作者:Taste人点击

分享
第七城市th7cn
使用chrome无头浏览器做爬虫 - 有什么拿什么
puppeteer
它是Node的一个用来操纵Chrome的API的库,对的你没看错,就是操作浏览器的,细思极恐啊
简单说就是浏览器有的它都有了(当然有些功能也正在开发中)
Chrome团队对其维护,厉害了吧
文档地址:https://github.com/GoogleChro...

安装
首先Nodejs 的版本不能低于 v7.6.0, 因为全都是 async, await 异步操作
npm install puppeteer -S

官网的demo
const puppeteer = require('puppeteer');
(async () => {
// 创建一个浏览器实例 Browser 对象
const browser = await puppeteer.launch();
// 通过浏览器实例 Browser 对象创建页面 Page 对象
const page = await browser.newPage();
// 通过url参数打开指定的页面
await page.goto('https://example.com');
// 对页面进行截图
await page.screenshot({path: 'example.png'});
// 关闭浏览器
await browser.close();
})();
先来个最最基本的抓取
实战_抓取2345小说站任意书籍的章节列表



两个箭头标记的

观察url,.html之前的数字就是抓取书籍的bookId
章节列表所在容器标签

上干货,都在注释里了



完整代码
const puppeteer = require('puppeteer');
(async ()=>{
try{
// 创建一个浏览器实例 Browser 对象
let browser = await puppeteer.launch({
// 是否不显示浏览器, 为true则不显示
'headless': false,
});
// 通过浏览器实例 Browser 对象创建页面 Page 对象
let page = await browser.newPage();
// 设置浏览器信息
const UA = "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/63.0.3239.84 Chrome/63.0.3239.84 Safari/537.36";
await Promise.all([
page.setUserAgent(UA),
// 允许运行js
page.setJavaScriptEnabled(true),
// 设置页面视口的大小
page.setViewport({width: 1100, height: 1080}),
]);
// 地址
let chapter_list_url = `http://book.km.com/chapterlist/396353.html`
// 打开章节列表
await page.goto(chapter_list_url);
// 使用css选择器的方式
let content= await page.$eval('#xtopjsinfo > div.wrapper > div.container > div.catalog > div.catalog_bd', el => el.innerText);
console.log(content);
}catch(err){
console.log(err)
}
})()
第七城市th7cn

微信扫一扫

第七城市微信公众平台