/* eslint-disable strict */ const Service = require('egg').Service; const svgCaptcha = require('svg-captcha'); // const cheerio = require('cheerio'); // const puppeteer = require('puppeteer'); const charset = require('superagent-charset'); const superagent = charset(require('superagent')); const cheerio = require('cheerio'); const fs = require('fs'); const { CrudService } = require('naf-framework-mongoose/lib/service'); class ToolsService extends CrudService { // 产生验证码 async captcha() { const captcha = svgCaptcha.create({ size: 4, // 大小 fontSize: 50, // 字体大小 width: 100, // 宽 height: 40, // 高 bacground: '#cc9966', // 背景色 }); return captcha; } // 发送短信验证码 async sendmessage(ctx, app, randomstr) { const message = '【吉林省就业中心】您的验证码为:' + randomstr + ',请在30分钟内完成输入,欢迎使用吉林省智慧就业企业服务平台。'; const data = '?Id=300&Name=wwqcgh&Psw=jljyzx-wwqcgh&Message=' + message + '&Phone=' + ctx.query.mobile + '&Timestamp=0'; // const data = '?Id=300&Name=wwqcgh&Psw=jljyzx-wwqcgh&Message=' + message + '&Phone=' + phone + '&Timestamp=0'; const path = ctx.app.config.messageDir + data; const result = await app.curl(path, { method: 'GET', dataType: 'text/xml', }); return result; } // async creeper() { // // 目标链接 吉林省人事考试网第一页 // const targetUrl = 'http://www.jlzkb.com/cms/root/ksbmList.vm?dir=L-iAg-ivleaKpeWQjS_kuovkuJrljZXkvY3mi5vogZjogIPor5U&page=1&rows=10'; // const columnTitle = '吉林省事业单位招聘'; // // 查看是否有这个栏目,没有则创建一个 // let column = await this.service.column.model.find({ news_type: '0', title: columnTitle }); // if (column.length === 0) { // column = await this.service.column.model.create({ site: '99991', news_type: '0', title: columnTitle, type: '', parent_id: '', parent: '', is_use: '' }); // } else { // column = column[0]; // } // await this.creeperCreate(targetUrl, column); // } // // 输入路径返回文本 // async creeperCreate(targetUrl, column) { // // 目标链接 吉林省人事考试网第一页 // // 用来暂时保存解析到的内容和图片地址数据 // const hrefOld = targetUrl; // const hrefAdd = 'http://www.jlzkb.com/cms/root/'; // const uri = 'http://www.jlzkb.com'; // // const imgs = []; // // 创建附件文件夹(暂定直接跳到该网站下载) // // this.mkdir('./attachment'); // // 发起请求 // superagent.get(targetUrl).charset('utf-8').buffer(true) // .end((error, res) => { // if (error) { // 请求出错,打印错误,返回 // console.log(error); // return; // } // // cheerio需要先load html // const $ = cheerio.load(res.text); // // 循环列表,获取标题、a标签路径、日期,然后根据a标签路径再次进行爬出内容、保存即可 // $('#DivInfoList tr').each((index, element) => { // // 这些数据都是存放在news中的 // const title = $(element).find('td a').attr('title'); // const thisHref = $(element).find('td a').attr('href'); // const time = $(element).find('td[width="12%"]').text(); // const publishTime = time.substring(1, 11); // // 这里可以给时间做判断当前日期(如果需要的话可以做为判断条件) // const nowDate = new Date().toLocaleDateString(); // if (publishTime !== nowDate) { // // 为undefined时,不需要进行下一步了 // if (thisHref !== undefined) { // const thisAllHref = hrefAdd + thisHref; // // 请求内容 // superagent.get(thisAllHref).charset('utf-8').buffer(true) // .end((error, res) => { // if (error) { // 请求出错,打印错误,返回 // console.log(error); // return; // } // const $ = cheerio.load(res.text); // // 获取内容保存 // const content = $('#fontzoom').children('p').clone(); // content.find(':nth-child(n)').remove(); // const attachment = []; // // 每页都查询是否有附件存在,如果有,下载到本地,保存即可 // $('#fontzoom p a').each((index, element) => { // const thisHref = $(element).attr('href'); // if (thisHref.substring(0, 4) !== 'http') { // const url = uri + thisHref; // const fileName = $(element).text(); // // const filepath = this.downloadAttachment(url, fileName); // const file = { // name: fileName, // uri: url, // }; // attachment.push(file); // } // }); // const news = this.service.news.model.create({ // site: column.site, // title, // pic: '', // content, // type: '', // parent_id: column.id, // parent: column.title, // publish_time: publishTime, // attachment, // is_use: '0' // }); // }); // } // } // }); // // 点击下一页 // const href = $('#DivPageControl a').eq(2).attr('href'); // const hrefNew = hrefAdd + href; // // 第一次路径与第二次路径比较,相同,就不需要调自己了 // console.log(hrefNew); // console.log(hrefOld); // if (hrefNew !== hrefOld) { // // this.creeperCreate(hrefNew, column); // // over // } // }); // } // // 创建目录 // async mkdir(_path) { // if (fs.existsSync(_path)) { // console.log(`${_path}目录已存在`); // } else { // fs.mkdir(_path, error => { // if (error) { // return console.log(`创建${_path}目录失败`); // } // console.log(`创建${_path}目录成功`); // }); // } // } // // -------------------------------------------------------这里应返回路径供给前台下载(图片存放问题一并解决)----------------------------------------------------- // // 下载爬到的附件 // async downloadAttachment(thisHref, fileName) { // // 下载图片存放到指定目录 // const stream = fs.createWriteStream('./attachment/' + fileName); // const req = superagent.get(thisHref); // 响应流 // req.pipe(stream); // console.log(thisHref); // console.log(fileName); // return '这里返回路径保存即可'; // // console.log('开始下载>>>>>>>>>>>>>>'); // } } module.exports = ToolsService;