1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
| const request = require('request') const https = require('https') const cheerio = require('cheerio') const fs = require('fs') const schedule = require('node-schedule') const moment = require('moment') const domain = 'https://github.com/' const userId = 'sakurasuki'
const genLogData = msg => `[${moment(new Date().getTime()).format('YYYY-MM-DD HH:mm:ss')}] ------ ${msg}\n` const writeLog = msg => { const log = fs.createWriteStream(`../logs/${moment(new Date().getTime()).format('YYYY-MM-DD')}.txt`, { flags: 'a' }) log.write(genLogData(msg)) log.end() }
const loadPage = () => { writeLog(`开始读取网页信息:${domain + userId}`) request(domain + userId, (error, res, body) => { if (error) { writeLog(`loadPage异常捕获:${error.message}`) return }
$ = cheerio.load(body) const avatar = $('.avatar.avatar-user.width-full.color-bg-default').attr('src') if (avatar) saveImage(avatar, 'avatar.png') else writeLog('没有找到所需图片') }) }
const saveImage = (url, fileName) => { const path = '../images/' https.get(url, (req, res) => { var imgData = '' req.on('data', chunk => { imgData += chunk }) req.setEncoding('binary') req.on('end', () => { fs.writeFile(path + fileName, imgData, 'binary', err => { if (err) { writeLog(`保存失败:${err.message}`) return } writeLog(`保存图片成功:${path + fileName}`) }) }) }) }
let rule = new schedule.RecurrenceRule() rule.minute = 0 rule.second = 0
schedule.scheduleJob(rule, () => { writeLog('定时任务启动') loadPage() })
|