本文介绍: 在互联网时代图片信息传递和展示的重要组成部分,而提取网页中的图片数据对于一些项目需求来说尤为重要。本文将详细介绍如何使用Node.js编写爬虫程序实现网页图片的批量爬取,帮助您轻松获得所需的图片数据,并揭示一些实用技巧注意事项。三、运行程序注意事项

互联网时代,图片是信息传递和展示的重要组成部分,而提取网页中的图片数据对于一些项目需求来说尤为重要。本文将详细介绍如何使用Node.js编写爬虫程序实现网页图片的批量爬取,帮助您轻松获得所需的图片数据,并揭示一些实用技巧注意事项
一、准备工作

  1. 安装Node.js:确保您的电脑上已经安装了Node.js,您可以官网https://nodejs.org/)下载最新版本并进行安装
  2. 创建项目目录:在本地创建一个新的文件夹作为项目目录用于存放爬虫程序爬取的图片。
  3. 初始化项目打开命令行工具进入项目目录,并执行以下命令初始化项目:
    npm init -y
    
  4. 安装相关依赖:在项目目录执行以下命令,安装需要依赖包:
    npm install axios cheerio fs path
    

二、实现爬虫程序

  1. 导入依赖
    在项目根目录新建一个crawler.js文件,并在文件头部导入需要依赖
    const axios = require('axios');
    const cheerio = require('cheerio');
    const fs = require('fs');
    const path = require('path');
    
  2. 发起HTTP请求
    编写一个fetchPage函数用于发起HTTP请求获取网页内容
    async function fetchPage(url) {
      try {
        const response = await axios.get(url);
        return response.data;
      } catch (error) {
        console.error(error);
        throw new Error('Failed to fetch the page');
      }
    }
    
  3. 解析网页:
    利用cheerio库来解析网页内容,提取其中的图片链接
    function extractImageUrls(html) {
      const $ = cheerio.load(html);
      const imageUrls = [];
      $('img').each((index, element) => {
        const src = $(element).attr('src');
        // 对图片链接进行处理,补全相对路径
        const imageUrl = new URL(src, 'http://example.com').href;
        imageUrls.push(imageUrl);
      });
      return imageUrls;
    }
    
  4. 下载图片:
    编写一个downloadImage函数用于下载图片到本地
    async function downloadImage(url, savePath) {
      try {
        const response = await axios.get(url, { responseType: 'stream' });
        const filePath = path.join(savePath, path.basename(url));
        const writer = fs.createWriteStream(filePath);
        response.data.pipe(writer);
        return new Promise((resolve, reject) => {
          writer.on('finish', resolve);
          writer.on('error', reject);
        });
      } catch (error) {
        console.error(error);
        throw new Error('Failed to download the image');
      }
    }
    
  5. 组合函数
    编写一个函数,将上述函数组合起来,实现图片的批量爬取
    async function main() {
      const url = 'http://example.com'; // 替换需要爬取的网页URL
      const savePath = path.join(__dirname, 'images');
     try {
        const html = await fetchPage(url);
        const imageUrls = extractImageUrls(html);
        fs.mkdirSync(savePath, { recursive: true });
        for (const imageUrl of imageUrls) {
          await downloadImage(imageUrl, savePath);
          console.log('Downloaded:', imageUrl);
        }
      } catch (error) {
        console.error(error);
      }
    }
    main();
    

三、运行程序与注意事项

  1. 运行程序:
    打开命令行工具进入项目目录执行以下命令运行爬虫程序:
    node crawler.js
    
  2. 注意事项:

原文地址:https://blog.csdn.net/D0126_/article/details/133267727

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。

如若转载,请注明出处:http://www.7code.cn/show_#ID#.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注