Node爬虫项目精简版 wallhaven网站实操 2023.8.29

在这里插入图片描述
练习地址: https://wallhaven.cc/toplist

在这里插入图片描述

const express = require('express');
const axios = require('axios');
const cheerio = require('cheerio');
const schedule = require('node-schedule');
const fs = require('fs');

async function downloadImage(url) {
    const response = await axios.get(url, {responseType: 'arraybuffer'});
    return response.data;
}
async function saveImage(url, path) {
    const image = await downloadImage(url);
    fs.writeFileSync(path, image);
}
async function AccessToResources(url) {
    try {
        const response = await axios.get(url);
        const $ = cheerio.load(response.data);
        const images = [];
        $('a.preview').each((i, el) => {
            const img = $(el).attr('href');
            if (!img) return;
            images.push(img);
        });
        for (let i = 0; i < images.length; i++) {
            const date = new Date();
            const response = await axios.get(images[i]);
            const $ = cheerio.load(response.data);
            const img = $('img#wallpaper').attr('src');
            const fileName = date.getTime();
            await saveImage(img, `./images/${fileName}.jpg`)
        }
    } catch (e) {
        console.log('e');
    }
}

const rule = new schedule.RecurrenceRule();
rule.hour = [1, 2, 3, 4, 5, 6];
rule.minute = 0;
const url = 'https://wallhaven.cc/toplist';
const job = schedule.scheduleJob(rule, function () {
    console.log('开始执行任务', rule.hour)
    AccessToResources(url);
});
AccessToResources(url);

const app = express();
app.use(express.static('images'));
app.get('/', (req, res) => {
    res.send('Hello World!');
})
app.listen(1234, () => {
    console.log('server is running at http://localhost:1234');
})
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

秦书翔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值