【nodejs】用Node.js实现简单的壁纸网站爬虫

1. 简介

在这个博客中,我们将学习如何使用Node.js编写一个简单的爬虫来从壁纸网站获取图片并将其下载到本地。我们将使用Axios和Cheerio库来处理HTTP请求和HTML解析。

2. 设置项目

首先,确保你已经安装了Node.js环境。然后,我们将创建一个新的文件夹,初始化项目并安装所需的依赖库:

bash 复制代码
Copy code
mkdir wallpaper-scraper
cd wallpaper-scraper
npm init -y
npm install axios cheerio
  1. 编写爬虫代码

在项目文件夹中,创建一个名为scraper.js的文件,并将你提供的代码复制粘贴进去。

javascript 复制代码
const axios = require('axios');
const cheerio = require('cheerio');
const fs = require('fs');

const baseUrl = 'http://www.netbian.com/';
const page = 3;

const pachong = async () => {
  const imgList = [];
  for (let i = 0; i < page; i++) {
    const res = await axios.get(
      `${baseUrl}index${i === 0 ? '' : `_${i + 1}`}.htm`,
    );
    const $ = cheerio.load(res.data);
    const imgList2 = $('.list li a img')
      .toArray()
      .map((item) => {
        return $(item).attr('src');
      });
    imgList.push(...imgList2);
  }
  writeFile(imgList);
};

const writeFile = async (urls) => {
  urls.forEach(async (item) => {
    try {
      const res = await axios.get(item, { responseType: 'arraybuffer' });
      const imgBuffer = Buffer.from(res.data, 'binary');
      await fs.promises.writeFile(
        `./img/${new Date().getTime()}.jpg`,
        imgBuffer,
      );
      console.log('写入成功 --- ' + item);
    } catch (error) {
      console.log('写入失败 --- ' + error);
    }
  });
};

pachong();

4. 运行爬虫

现在,你可以在命令行中运行爬虫脚本:

bash 复制代码
node scraper.js

脚本会自动爬取壁纸网站的图片并将它们下载到一个名为img的文件夹中。每张图片将使用当前时间戳作为文件名,以确保唯一性。

5. 注意事项

确保遵守网站的使用条款和条件。不要过度请求或滥用网站,以免造成不必要的麻烦。

代码中使用的选择器、URL结构等可能会因网站结构的更改而失效。需要根据实际情况进行调整。

相关推荐
喵手1 小时前
Python爬虫实战:舆情语料项目 - 从新闻抓取到文本挖掘的完整实战(附CSV导出 + SQLite持久化存储)!
爬虫·python·爬虫实战·零基础python爬虫教学·舆论语料项目·新闻抓取到文本挖掘·爬虫实战采集舆论语料
喵手3 小时前
Python爬虫实战:数据质量检测与治理 - 构建健壮的爬虫数据管道(附CSV导出 + SQLite持久化存储)!
爬虫·python·sqlite·爬虫实战·零基础python爬虫教学·数据质量检测与治理·爬虫数据管道
盖头盖19 小时前
【vm沙箱逃逸】
node.js
喵手1 天前
Python爬虫实战:电商问答语料构建完整实战 - 从爬取到检索语料的工程化实现(附CSV导出 + SQLite持久化存储)!
爬虫·python·sqlite·爬虫实战·零基础python爬虫教学·电商问答语料构建·爬取到检索语料
belldeep1 天前
nodejs: 能在线编辑 Markdown 文档的 Web 服务程序,更多扩展功能
前端·node.js·markdown·mermaid·highlight·katax
松树戈1 天前
【vfox教程】一、vfox在win系统下的安装与卸载
jdk·node.js·vfox
yq1982043011561 天前
基于Python爬虫原理的Pinterest视频资源获取技术解析与工具实践
爬虫·python·django·音视频
喵手1 天前
Python爬虫实战:自动化质量护航 - 构建爬虫数据的“熔断与巡检”规则引擎实战!
爬虫·python·自动化·爬虫实战·零基础python爬虫教学·自动化质量护航·数据熔断
嚯嚯歪2 天前
攻克腾讯 TCaptcha 滑块验证码:纯 HTTP 协议逆向实战
爬虫·python·逆向·验证码识别
喵手2 天前
Python爬虫实战:构建一个高健壮性的图书数据采集器!
爬虫·python·爬虫实战·零基础python爬虫教学·构建图书数据·采集图书数据·图书数据采集