它是Node的一个用来操纵浏览器的API的库,对的你没看错,就是操做浏览器的,细思极恐啊
简单说就是浏览器有的它都有了(固然有些功能也正在开发中)
能够注册,模拟登录,设置cookie
操做dom事件,执行js脚本
Chrome团队对其维护,厉害了吧
文档地址: https://github.com/GoogleChro...
首先Nodejs 的版本不能低于 v7.6.0, 由于全都是 async, await 异步操做
npm install puppeteer -S
出现安装问题的小伙伴能够试一试npm的内置配置文件,当前目录下新建一个.npmrc结尾的文件,内容以下
registry=https://registry.npm.taobao.org chromedriver_cdnurl=http://npm.taobao.org/mirrors/chromedriver phantomjs_cdnurl=https://npm.taobao.org/dist/phantomjs electron_mirror=https://npm.taobao.org/mirrors/electron/ sass_binary_site=https://npm.taobao.org/mirrors/node-sass/ puppeteer_download_host=https://cdn.npm.taobao.org/dist
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(); })();
两个箭头标记的css
- 观察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) } })()