Puppeteer 是 Chrome 开发团队在 2017 年发布的一个 Node.js 包,用来模拟 Chrome 浏览器的运行。
它可以作为自动化的测试工具,也可以作为爬虫工具。
Puppeteer传送门
Puppeteer安装
先在文件夹初始化个简单项目吧,npm init
- 安装puppeter
使用npm i Puppeter安装的时候会下载 Chromium (~170MB Mac, ~282MB Linux, ~280MB Win)
实际上Puppeteer是Chromium+Puppeteer-core组成的,Chromium是chrome的开源版本,也是开发版本,有啥好玩的新功能Chromium都会先测试稳定再发布到Chrome上,所以可以选择不下载Chromium,使用本机的Chrome,这样的话需要另外一个插件 carlo,自动寻找本机Chrome的路径
- 安装puppeter-core
现在使用本机Chrome
npm i puppeter-core carlo
简单的例子–美团网搜索关键字 烧烤
talk is cheap, show me the code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| const puppeteer = require('puppeteer-core'); const findChrome = require('carlo/lib/find_chrome'); (async () => { let findChromePath = await findChrome({}); // console.log(findChromePath) const browser = await puppeteer.launch({ executablePath: findChromePath.executablePath, pipe: true, defaultViewport: null, headless: false, devtools: true, userDataDir: 'C:\Users\kele\Desktop\puppeteer', // args, }); const page = await browser.newPage(); page.on('response', (response)=>{ if(response._url.indexOf('ptapi/recommends?limit') != -1){ console.log(response.json().then(json=>{ console.log(json) }) ) } }); await page.goto('https://sh.meituan.com/'); // await page.screenshot({path: 'example.png'}); await page.type('.header-search-input','烧烤'); await page.click('.header-search-btn');
// await browser.close(); })();
|
Run
node example.js