Puppeteer实战指南:自动化抓取网页中的图片资源

1. Puppeteer 简介

Puppeteer是Google Chrome团队开发的一个Node库,它提供了一个高级API来控制Chrome或Chromium浏览器。Puppeteer可以进行网页自动化操作,包括导航、屏幕截图、生成PDF、捕获网络活动等。

2. 环境搭建

在开始之前,确保你的开发环境中安装了Node.js和npm。接着,通过npm安装Puppeteer:

复制代码
npm install puppeteer

3. 抓取网页图片的策略

1. 环境与工具介绍

首先,我们需要Node.js环境以及npm(Node包管理器)。Puppeteer可以通过npm安装:

复制代码
npm install puppeteer

2. 代理服务器的准备

代理服务器可以是HTTP代理或SOCKS代理,你需要从可信赖的代理服务提供商获取代理IP和端口。确保代理IP可用,并且支持HTTP/HTTPS协议。

3. Puppeteer配置代理

Puppeteer允许通过命令行参数或设置浏览器的代理来配置代理服务器。我们将通过设置浏览器的代理来实现。

4. 实战案例:使用代理IP抓取图片

步骤1:设置代理并启动浏览器
复制代码
const puppeteer = require('puppeteer');

(async () => {
  // 代理服务器信息
  const proxyHost = "www.16yun.cn";
  const proxyPort = "5445";
  const proxyUser = "16QMSOML";
  const proxyPass = "280651";

  // 构建带有用户名和密码的代理服务器URL
  const proxyUrl = `http://${proxyUser}:${proxyPass}@${proxyHost}:${proxyPort}`;
  
  // 设置Puppeteer使用代理
  const browser = await puppeteer.launch({
    args: [
      '--proxy-server=' + proxyUrl, // 使用完整的代理URL
      // 其他需要的启动参数...
    ]
  });

  const page = await browser.newPage();

  // 接下来添加页面导航和操作的代码...

  // 任务完成后关闭浏览器
  await browser.close();
})();
步骤2:导航到目标网页
复制代码
await page.goto('https://example.com'); // 替换为实际的URL
步骤3:等待图片加载完成
复制代码
await page.waitForSelector('img');
步骤4:抓取图片资源链接
复制代码
const imageSrcs = await page.evaluate(() => {
    const images = document.querySelectorAll('img');
    const srcs = Array.from(images).map(img => img.src);
    return srcs;
  });
步骤5:下载图片资源
复制代码
const downloadImages = async (src) => {
    const filename = src.split('/').pop();
    const path = `./images/${filename}`;
    await page.download(src, {path: path});
    console.log(`图片下载成功:${filename}`);
  };

  for (let src of imageSrcs) {
    await downloadImages(src);
  }
步骤6:关闭浏览器
复制代码
await browser.close();
})();

5. 处理动态加载的图片

对于通过JavaScript动态加载的图片,可能需要更复杂的等待策略,如等待特定的网络请求完成或使用page.waitForFunction等待页面达到某个状态。

6. 遵守法律法规

在进行网页内容抓取时,必须遵守目标网站的robots.txt协议,尊重版权和隐私权。确保你的抓取行为是合法的,并且不会对网站的正常运行造成影响。

相关推荐
小艳加油1 分钟前
Python机器学习与深度学习;Transformer模型/注意力机制/目标检测/语义分割/图神经网络/强化学习/生成式模型/自监督学习/物理信息神经网络等
python·深度学习·机器学习·transformer
学行库小秘2 小时前
ANN神经网络回归预测模型
人工智能·python·深度学习·神经网络·算法·机器学习·回归
Yn3122 小时前
在 Python 中使用 json 模块的完整指南
开发语言·python·json
秋难降2 小时前
线段树的深度解析(最长递增子序列类解题步骤)
数据结构·python·算法
猿榜2 小时前
Python基础-控制结构
python
Ratten2 小时前
【Python 实战】---- 实现一个可选择、配置操作的批量文件上传工具(三)上传类的实现
python
阿里云大数据AI技术3 小时前
【跨国数仓迁移最佳实践6】MaxCompute SQL语法及函数功能增强,10万条SQL转写顺利迁移
python·sql
杜子不疼.3 小时前
《Python学习之文件操作:从入门到精通》
数据库·python·学习
微小的xx4 小时前
java + html 图片点击文字验证码
java·python·html
杭州泽沃电子科技有限公司4 小时前
告别翻山越岭!智能监拍远程守护输电线路安全
运维·人工智能·科技·安全