0%

Puppeteer

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