技巧干货:用Node+EJS写一个爬虫脚本每天定时女朋友发邮件
优采云 发布时间: 2022-10-17 05:09技巧干货:用Node+EJS写一个爬虫脚本每天定时女朋友发邮件
微信日报说每天自动发微信给你的亲人
项目介绍灵感来源
掘金看到一篇文章文章《用Node+EJS写爬虫脚本,每天给女朋友发一封暖心邮件》,正好看到评论区有读者问微信能不能做。然后最近正好在做微信机器人的一个小项目,就把这个定时任务放到微信上来做吧。
项目地址
:/…
使用库函数数据源调度任务
节点 - 您是独一无二的,您可以安排每个月、每周和每天执行的任务。
达到想要的效果
因为微信定期发消息,相比邮件,微信不能把图片和文字放在同一个消息框里,所以可能不如邮件可以加好友,但文字还是可以排版的,美观。由于时间仓促,文字较少,后续内容会不断补充;
代码 描述 目录结构
核心代码
index.js
微信的登录、定时任务的创建、发送信息的获取都在这个文件里
/** * WechatBot * - */const {Wechaty,Friendship} = require('wechaty')const schedule = require('./schedule/index')const config = require('./config/index')const untils = require('./untils/index')const superagent = require('./superagent/index')const {FileBox} = require('file-box') //文件读取模块 // 二维码生成函数 onScan (二维码,状态){需要('二维码终端')。generate(qrcode) // 在控制台端显示二维码 const qrcodeImageUrl = ['#39;,encodeURIComponent(qrcode), ].
加入('')控制台。log(qrcodeImageUrl)}// 登录异步函数 onLogin (user) { console. log(`贴心助手 ${user} 已登录`) // 登录后创建定时任务调度 setSchedule(config.SENDDATE,()=>{console.log('你的甜心助手正在工作!')main( ) })}//注销函数 onLogout(user) { console. log(`${user} logout`)}// 监控会话根据关键词 async function onMessage (msg) { const contact = msg. from() // 发送者 const content = msg. text() //消息内容 const room = msg. room() //是否为群发消息 const roomCodeUrl = FileBox. fromUrl(config.ROOMCODEURL) //来自 url 的文件 const roomCodeLocal = FileBox.
fromFile(config.ROOMLOCALPATH) //添加本地文件 if (msg.self()) {return } if(room){ //如果是群消息 const topic = await room. 主题()控制台。log(`group name: ${topic} sender: ${contact.name()} content: ${content}`) }else { // 如果不是群消息控制台。log(`消息发送者:${contact.name()} 消息内容:${content}`)let addRoomReg = eval(config.ADDROOMWORD)let roomReg = eval(config.ROOMNAME)if(addRoomReg.test(content) && !room){ 让 keyRoom = 等待这个。房间。find({topic: roomReg}) if(keyRoom){try{await contact. 说(roomCodeLocal||roomCodeUrl) 等待 keyRoom。
say('微信日报说:欢迎新朋友', contact)}catch (e) {console. error(e)} }}else { 等待联系。say('你好,别逗我了,我只会在群里发二维码,不会聊天!') 等待联系。say('请回复密码:添加群组获取群组二维码图片')} }}// 自动添加好友函数 async function onFriendShip(friendship) { let logMsg try {logMsg = '添加好友' +friendship. 接触()。名称()控制台。log(logMsg) switch(friendship.type()) { /** * * 1. 新好友请求 * * 设置请求后,我们可以从`request. hello`, * 并通过 `request. accept()` */ case 友谊。
类型。Receive:let addFriendReg = eval(config.ADDFRIENDWORD) if (addFriendReg.test(friendship.hello())) {logMsg = '自动添加朋友,因为验证消息收录关键字'daily say''等待友谊。accept()} else {logMsg = '验证失败' + 友情。hello()}break/** ** 2. Friend Ship Confirmed * */ case Friendship. 类型。Confirm:logMsg = '朋友船用' + 友谊确认。接触()。name()break} } 捕获 (e) {logMsg = e. 消息}控制台。log(logMsg)}// 自动消息函数 async function main() { let contact = await bot. 接触。
查找({name:config.NICKNAME})|| 等待机器人。接触。find({alias:config.NAME}) // 获取要发送的联系人 let one = await superagent. getOne() //获取每日语句 let weather = await superagent. getWeather() //获取天气信息 let today = await untils. formatDate(new Date())//获取今天的日期 let MemorialDay = untils. getDay(config.MEMORIAL_DAY)//获取周年纪念天数 let str = today + '
' + '今天是我们在一起的第一天' + 纪念日 + '日子' + '
我知道今天的天气
' + weather.weatherTips +'
' +weather.todayWeather+ ' 每日语句:
'+一个+'
'+'-----来自最爱你的我' await contact.say(str)//发送消息}const bot = new Wechaty()bot.on('scan', onScan)bot.on( 'login', onLogin)bot.on('logout', onLogout)bot.on('message', onMessage)bot.on('friendship', onFriendShip)bot.start().then(() => 控制台。 log('开始登录微信')).catch(e => console.error(e))复制代码
/index.js
const superagent = require('../config/superagent')const config = require('../config/index')const chefio = require('cheerio')async function getOne() { // 获取每日 let res = 等待超级代理。req(config.ONE,'GET') 让 $ =cheerio. load(res.text) let todayOneList = $('#carousel-one.carousel-inner.item') let todayOne = $(todayOneList[0])。查找('.fp-one-cita')。文本()。replace(/(^\s*)|(\s*$)/g, "") return todayOne;}async function getWeather() { //获取墨水天气 let url = config.
MOJI_HOST+配置。城市+'/'+配置。LOCATION 让 res = 等待超级代理。req(url,'GET') 让 $ =cheerio. load(res.text) let weatherTips = $('.wea_tips em'). text() const 今天 = $('.forecast.days'). 第一的()。查找(“李”);让 todayInfo = { Day:$(today[0]). 文本()。替换(/(^\s*)|(\s*$)/g, ""), WeatherText:$(today[1])。文本()。替换(/(^\s*)|(\s*$)/g,“”),临时:$(今天[2])。文本()。替换(/(^\s*)|(\s*$)/g, ""), Wind:$(今天[3])。找到('他们')。文本()。替换(/(^\s*)|(\s*$)/g, ""), WindLevel:$(today[3])。
查找('b')。文本()。替换(/(^\s*)|(\s*$)/g, ""), PollutionLevel:$(today[4])。找到('强')。文本()。替换(/(^\s*)|(\s*$)/g, "") } 让 obj = {weatherTips:weatherTips,todayWeather:todayInfo. 天 + ':' + todayInfo. 天气文本 + '
' + '温度:' + todayInfo.Temp + '
'+ todayInfo.Wind + todayInfo.WindLevel + '
' + '空气:' + todayInfo.PollutionLevel + '
' } 返回 obj}module.exports ={ getOne,getWeather}
项目运行
既然需要安装,就必须先配置镜像,注意限制微信自动加好友系统。最好使用上面的版本
npm
npm config 设置注册表 npm config 设置 disturl npm config 设置 puppeteer_download_host
纱
纱线配置设置注册表纱线配置设置disturl纱线配置设置puppeteer_download_host
然后进行项目安装
git clone :gengchen528/wechatBot.gitcd wechatBotnpm install 或 cnpm install
参数配置
//index.js
// 配置文件 module.exports ={ ONE:'#39;, ONE's web version 网站 MOJI_HOST:'#39;, //墨迹天气url CITY:'shanghai',//接收者所在城市is located LOCATION:'pudong-new-district',//收件人所在的小区(访问墨迹天气后可以查看小区的英文拼写网站) MEMORIAL_DAY:'2015/04/18' , //你和收件人周年纪念 NAME:'Leo_chen',//备注姓名NICKNAME:'Leo_chen', //昵称SENDDATE:'30 15 8 * * *',//预定发送时间每天8点15分: 30、看规则/schedule/index.js ROOMNAME:'/^WeChat say every day/i', //组名(请只修改中文,不要删除符号,这是常规) ADDFRIENDWORD:'/WeChat say every day天/i',// 关键词自动添加好友触发(请只修改中文,不要删除符号,这个是常规的) ADDROOMWORD:'/加群/',//自动发送群图触发关键词删除符号,这是常规的) ROOMCODEURL:'#39;,//群组二维码url链接(选择本地群组二维码路径) ROOMLOCALPATH:'./static/qun.png',//本地群组二维码代码图片路径(组url可选)}复制代码/static/qun.png',// 本地群二维码图片路径(群url可选)}复制代码/static/qun.png',// 本地群二维码图片路径(群url可选)}复制代码
开始
npm run start 然后拿出手机,最好用小号,扫描控制台二维码复制代码
后续函数final要解决的问题
因为这个微信已经增加了自动加好友拉群的功能,感兴趣的朋友可以加我的微信测试一下,加好友的时候记得带上密码:微信说每天加好友后发个群,群二- 自动发送二维码;
添加好友注意事项
自己试试吧,相信你会发现更多有趣的功能
技术贴:(发外链教程)网站外链怎么正确的发
通过这几年搜索引擎的维护和整改,搜索引擎对外部链接的识别权重也降低了,但是一定要记住,是降低,不是取消,降低不等于无用。相信做seo优化的大家都听人说外链没用,没必要发外链。编辑本人不同意这种说法。他们说 网站 发送外部链接是没有用的。原因是我没有坚持发送外链的问题,或者没有正确发送外链,所以我教大家如何正确发送外链。
1:网站外链广泛性:外链最好不要选择单一平台操作,比如一直使用博客外链,长期使用签名外链等。这样的单一链接有以下缺点。如果论坛出现问题或者博客被封禁,我们的联系就白费了,努力的结果终将付诸东流。我们可以使用新的云来查看我们同行网站的外链,采集他们的外链平台,增加它作为我们的外链平台。
2:网站外链持久化:这点是很多新手朋友最容易忽略的问题之一。网站 刚推出时,通常很受欢迎。每天,我都会发送 文章 做外部链接。链,但是一个月后,连接就懒得发了,或者逐渐稀疏,很糟糕。
3:网站外链的相关性:比如我在做SEO教程,那我可以去一些SEO论坛和博客做一些外链。相关的外展无疑会对网站的排名产生不可小觑的作用,这就要求我们在为网站做外链的时候要增加close或者类似的链接数量。