当前位置:实例文章 » 其他实例» [文章]Puppeteer 使用教程-实战篇(爬取图片、视频、音频,页面数据)

Puppeteer 使用教程-实战篇(爬取图片、视频、音频,页面数据)

发布人:shili8 发布时间:2025-02-08 04:02 阅读次数:0

**Puppeteer 使用教程-实战篇**

Puppeteer 是一个 Node.js 库,用于控制 Chrome 浏览器。它可以用来爬取网页内容、执行 JavaScript代码、截图等功能。在本文中,我们将介绍如何使用 Puppeteer 实现一些常见的任务,如爬取图片、视频、音频和页面数据。

### 安装 Puppeteer首先,需要安装 Puppeteer 库。可以通过以下命令进行安装:

bashnpm install puppeteer


### 爬取图片下面是一个例子,展示如何使用 Puppeteer 爬取网页上的图片:

javascriptconst puppeteer = require('puppeteer');

(async () => {
 const browser = await puppeteer.launch();
 const page = await browser.newPage();

 // 指定爬取的 URL await page.goto(' />
 // 等待页面加载完成 await page.waitForNavigation({ waitUntil: 'networkidle0' });

 // 获取所有图片元素 const images = await page.$$('img');

 // 将图片下载到本地 for (const image of images) {
 const src = await image.getAttribute('src');
 if (src) {
 const filename = src.split('/').pop();
 await page.goto(src);
 await page.screenshot({ path: `./${filename}`, type: 'png' });
 }
 }

 // 关闭浏览器 await browser.close();
})();


### 爬取视频爬取视频的过程与爬取图片类似,但是需要注意的是,视频可能需要下载整个文件,而不是像图片那样直接截图。下面是一个例子:

javascriptconst puppeteer = require('puppeteer');

(async () => {
 const browser = await puppeteer.launch();
 const page = await browser.newPage();

 // 指定爬取的 URL await page.goto(' />
 // 等待页面加载完成 await page.waitForNavigation({ waitUntil: 'networkidle0' });

 // 获取视频元素 const video = await page.$('video');

 // 下载视频 const filename = 'video.mp4';
 const filePath = `./${filename}`;
 const fs = require('fs');
 const stream = await page.evaluateHandle(() => {
 return new Promise((resolve, reject) => {
 const reader = new FileReader();
 reader.onloadend = () => resolve(reader.result);
 reader.onerror = () => reject(reader.error);
 reader.readAsArrayBuffer(video.srcElement);
 });
 });

 const videoBuffer = await stream.jsonValue();
 fs.writeFileSync(filePath, Buffer.from(videoBuffer));

 // 关闭浏览器 await browser.close();
})();


### 爬取音频爬取音频的过程与爬取视频类似,但是需要注意的是,音频可能需要下载整个文件,而不是像图片那样直接截图。下面是一个例子:

javascriptconst puppeteer = require('puppeteer');

(async () => {
 const browser = await puppeteer.launch();
 const page = await browser.newPage();

 // 指定爬取的 URL await page.goto(' />
 // 等待页面加载完成 await page.waitForNavigation({ waitUntil: 'networkidle0' });

 // 获取音频元素 const audio = await page.$('audio');

 // 下载音频 const filename = 'audio.mp3';
 const filePath = `./${filename}`;
 const fs = require('fs');
 const stream = await page.evaluateHandle(() => {
 return new Promise((resolve, reject) => {
 const reader = new FileReader();
 reader.onloadend = () => resolve(reader.result);
 reader.onerror = () => reject(reader.error);
 reader.readAsArrayBuffer(audio.srcElement);
 });
 });

 const audioBuffer = await stream.jsonValue();
 fs.writeFileSync(filePath, Buffer.from(audioBuffer));

 // 关闭浏览器 await browser.close();
})();


### 爬取页面数据下面是一个例子,展示如何使用 Puppeteer 爬取网页上的数据:

javascriptconst puppeteer = require('puppeteer');

(async () => {
 const browser = await puppeteer.launch();
 const page = await browser.newPage();

 // 指定爬取的 URL await page.goto(' />
 // 等待页面加载完成 await page.waitForNavigation({ waitUntil: 'networkidle0' });

 // 获取所有元素 const elements = await page.$$('*');

 // 将数据下载到本地 for (const element of elements) {
 const text = await element.textContent();
 if (text) {
 console.log(text);
 }
 }

 // 关闭浏览器 await browser.close();
})();


### 总结在本文中,我们介绍了如何使用 Puppeteer 实现一些常见的任务,如爬取图片、视频、音频和页面数据。这些例子展示了如何使用 Puppeteer 的 API 来控制 Chrome 浏览器,执行 JavaScript代码,并下载网页内容。

相关标签:爬虫音视频
其他信息

其他资源

Top