1. 安装 Puppteer
npm install puppteer -S
2. 引入并使用 Puppteer
const puppeteer = require("puppeteer");
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://example.com');
await page.screenshot({ path: 'example.png' });
await browser.close();
})();
3. 获取页面数据
const puppeteer = require("puppeteer");
class Robot {
constructor() {
this.username = ''
this.password = ''
}
async init() {
const browser = await puppeteer.launch({ timeout: 10000 });
this.browser = browser;
this.page = await browser.newPage();
await this.page.setViewport({
width: 1100,
height: 800
});
await this._login();
}
async _login() {
await this.open(LOGIN_URL);
await this.page.evaluate(() => {
fetch('login相关地址', {
method: 'POST',
mode: 'cors',
credentials: 'include',
headers: {
'Content-Type': 'application/json;charset=utf-8'
},
body: JSON.stringify({ username: this.username, password : this.password })
})
})
}
async open(url) {
await this.page.goto(url, { waitUntil: 'domcontentloaded' });
}
async requestInterception() {
await this.page.setRequestInterception(true);
return this.page
}
async waitForSelector(selector) {
return await this.page.waitForSelector(selector, { timeout: 10000 })
}
async getHtml() {
return await this.page.content()
}
async getContentByClass(name) {
let pages = await this.page.$$eval(name, e => {
let arr = []
e.map((item,index) => {
if (item.className.includes(name)) {
let obj = {
content: item.innerHTML,
pageNum: index + 1
}
arr.push(obj)
}
})
return arr
});
return pages
}
async getContentClass(name) {
let pages = await this.page.$eval(name, e => e.innerHTML);
return pages
}
async screenshot(option) {
return await this.page.screenshot(option)
}
async exportPdf(option) {
return await this.page.pdf(option)
}
async close() {
await this.browser.close()
}
}
module.exports = Robot
具体 Puppteer api 请访问以下地址
Puppteer 中文文档