当前位置: 首页 > news >正文

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');
})
http://www.lryc.cn/news/147532.html

相关文章:

  • Vue统计图表的数据标签和数值显示技巧
  • Linux 虚拟机同步时间crontab以及crond详解
  • springmvc没有绿标,怎么配置tomcat插件运行?
  • 设计模式--模板方法模式(Template Method Pattern)
  • linux 权限管理命令
  • c++ qt--线程(一)(第八部分)
  • 参数初始化方法
  • Go的基础运行方式和打包
  • Deepin 图形化部署 Hadoop Single Node Cluster
  • 23款奔驰GLS400升级柏林之声音响系统,体验不一样的感觉
  • Vue的map()方法和filter()方法的使用
  • qt创建临时文件
  • Element——table排序,上移下移功能。及按钮上一条下一条功能
  • 无涯教程-Android - Linear Layout函数
  • ELK安装、部署、调试(六) logstash的安装和配置
  • 【Spring Security】UserDetails 接口介绍
  • C# Linq源码分析之Take(四)
  • Python 和 C++ 使用细节差别
  • 在Ubuntu Linux系统上安装RabbitMQ服务并解决公网远程访问问题
  • 葫芦娃自动预约-公众号代挂
  • ESP32应用教程(0)— PMW3901MB光流传感器
  • docker部署nginx,部署springboot项目,并实现访问
  • 十五、模板方法模式
  • jvm 什么是常量池,常量池定义 class常量池
  • CA证书颁发机构服务器
  • 5. 线性层及其他层
  • PhpStorm安装篇
  • 麒麟Linux常见问题
  • 一百六十八、Kettle——用海豚调度器定时调度从Kafka到HDFS的任务脚本(持续更新追踪、持续完善)
  • Linux centos7 bash编程(小练习)