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


    Python_00123.png

    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协议,尊重版权和隐私权。确保你的抓取行为是合法的,并且不会对网站的正常运行造成影响。

  • 相关阅读:
    H.迷宫,(算法选修)
    Vue3通透教程【十八】TS为组件的props标注类型
    MASA Stack 第四期社区例会
    【SpringMVC】_设置响应状态码与Header
    SpringCloud——Http客户端Feign
    NLP大模型
    利用DMA的触发循环实现eTMR的PWM周期计数
    Spring学习(2) Spring的IOC底层实现
    【特纳斯电子】基于物联网的空气质量检测-实物设计
    NewStarCTF2023week3-Rabin‘s RSA
  • 原文地址:https://blog.csdn.net/Z_suger7/article/details/139992312