返回
Puppeteer 让 Node.js 爬虫开发更简单
前端
2024-01-01 15:36:02
1. 安装
npm install puppeteer
2. 简单使用
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. 关于 Puppeteer 的具体使用
我肯定没法和官方文档相比的。下面就用几个业务场景的 demo 来作为参考吧。
3.1 登录行为
这里用了简书的登录页面做个尝试。当然它是带有反爬验证的。
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://www.jianshu.com/sign_in');
// 输入用户名和密码
await page.type('#username', 'username');
await page.type('#password', 'password');
// 点击登录按钮
await page.click('.login-button');
// 等待页面加载完成
await page.waitForNavigation();
// 获取登录后的页面内容
const content = await page.content();
await browser.close();
console.log(content);
})();
3.2 爬取网页数据
这里用知乎的热榜数据做个演示。
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://www.zhihu.com/hot');
// 获取热榜数据
const hotList = await page.$('.hot-list li');
const data = [];
for (const item of hotList) {
const title = await item.$eval('.title', el => el.textContent);
const url = await item.$eval('.title a', el => el.href);
const heat = await item.$eval('.heat', el => el.textContent);
data.push({
title,
url,
heat
});
}
await browser.close();
console.log(data);
})();
4. 结语
Puppeteer 是一个非常强大的工具,它可以让你在 Node.js 中轻松开发爬虫和自动化网页测试。如果你有这方面的需求,强烈推荐你使用 Puppeteer。