用node撸一个监测复联4开售短信提醒的实现代码


Posted in Javascript onApril 10, 2019

背景

北美复仇者联盟4首映电影票eBay上面已经2500美元一张票了,为了避免抢不到票 写了个监控复仇者联盟4开售就发送短信的脚本,这样我们可以第一时间进行抢票,毕竟抢到就是赚到 。。。

思路

node编写一个抓包脚本监测在售的电影中是否有 “复仇者联盟” 这几个关键词,如果有则直接发送短信~

实现

要想实现我的想法,运用到了2个node库:superagent 和 cheerio ,分别实现发送请求和dom节点分析。

设置定时器

这里用 setInterval 来实现定时,每隔60s 抓取一次网页数据

function intervalFunc() {
  superagent.get('https://maoyan.com/films?sortId=2').end((err, res) => {
    if (err) {
      console.log(` - ${err}`)
    } else {
      getFilms(res)
    }
  });
}

var timer = setInterval(intervalFunc, 10000);

分析dom节点

用node撸一个监测复联4开售短信提醒的实现代码

我们只需要获取到 div 的class 是 channel-detail 就可以了 ~

let getFilms = (res) => {
  let $ = cheerio.load(res.text);
  var isOn = false
  $('.channel-detail').each((idx, ele) => {
    if ($(ele).text().indexOf("复仇") != -1) {
      isOn = true
    }
  });
  if (isOn) {
    for (const phone of phoneArray) {
      sendMessage(phone)
    }
    clearInterval(timer)
  } else {
    console.log("影片未上映....")
  }
};

这里如果监测到影片已经上映了记得关闭定时器 ~

发送短信

function sendMessage(mobile) {
  var http = require('http');
  var username = "";
  var secretkey = "";
  
  var path = "/sms_token?ddtkey=" + username + "&secretkey=" + secretkey
    + "&mobile=" + mobile + "&content=Go"

  var options = {
    host: '112.124.17.46',
    port: 7001,
    path: path,
    method: 'GET',
    headers: {
      'Content-Type': 'application/json'
    }
  };
  http.get(options, function (res) {
    var resData = "";
    res.on("data", function (data) {
      resData += data;
    });
    res.on("end", function () {
      console.log("影片已经上映,短信通知成功")
    });
  })
}

总结

1、node 抓包采用 superagent 和 cheerio
2、定时器关闭采用 clearInterval

完整的代码地址:https://github.com/ChengRuipeng/maoyan

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript 申明函数的三种方法 每个函数就是一个对象(一)
Dec 04 Javascript
解决IE下select标签innerHTML插入option的BUG(兼容IE,FF,Opera,Chrome,Safari)
May 13 Javascript
js实现收缩菜单效果实例代码
Oct 30 Javascript
jquery清空表单数据示例分享
Feb 13 Javascript
javascript实现当前页导航激活的方法
Feb 27 Javascript
jQuery仅用3行代码实现的显示与隐藏功能完整实例
Oct 08 Javascript
js数字计算 误差问题的快速解决方法
Feb 28 Javascript
Vue2.0使用过程常见的一些问题总结学习
Apr 10 Javascript
浅谈Node异步编程的机制
Oct 18 Javascript
javascript按钮禁用和启用的效果实例代码
Oct 29 Javascript
JS将网址url转化为JSON格式的方法
Jul 02 Javascript
微信小程序实现form表单本地储存数据
Jun 27 Javascript
从0到1搭建Element的后台框架的方法步骤
Apr 10 #Javascript
详解vue.js移动端配置flexible.js及注意事项
Apr 10 #Javascript
小程序分享模块超级详解(推荐)
Apr 10 #Javascript
关于JavaScript 数组你应该知道的事情(推荐)
Apr 10 #Javascript
Vue中computed、methods与watch的区别总结
Apr 10 #Javascript
JavaScript 性能提升之路(推荐)
Apr 10 #Javascript
详解vue-cli3 中跨域解决方案
Apr 10 #Javascript
You might like
php图片加中文水印实现代码分享
2012/10/31 PHP
PHP实现重载的常用方法实例详解
2017/10/18 PHP
swoole锁的机制代码实例讲解
2021/03/04 PHP
Javascript实例教程(19) 使用HoTMetal(1)
2006/12/23 Javascript
js中将多个语句写成一个语句的两种方法小结
2007/12/08 Javascript
用js实现下载远程文件并保存在本地的脚本
2008/05/06 Javascript
javascript new 需不需要继续使用
2009/07/02 Javascript
jquery的键盘事件修改代码
2011/02/24 Javascript
基于jquery的仿百度搜索框效果代码
2011/04/11 Javascript
Jquery中CSS选择器用法分析
2015/02/10 Javascript
ztree获取选中节点时不能进入可视区域出现BUG如何解决
2015/12/03 Javascript
JavaScript实现点击按钮字体放大、缩小
2016/02/29 Javascript
轻松掌握JavaScript策略模式
2016/08/25 Javascript
jQuery tagsinput在h5邮件客户端中应用详解
2016/09/26 Javascript
JS多文件上传的实例代码
2017/01/11 Javascript
vue-scroller记录滚动位置的示例代码
2018/01/17 Javascript
解决webpack多页面内存溢出的方法示例
2019/10/08 Javascript
vue中动态select的使用方法示例
2019/10/28 Javascript
json解析大全 双引号、键值对不在一起的情况
2019/12/06 Javascript
js原生map实现的方法总结
2020/01/19 Javascript
vue学习笔记之slot插槽基本用法实例分析
2020/02/01 Javascript
[02:44]2014DOTA2 国际邀请赛中国区预选赛 大神红毯秀
2014/05/25 DOTA
使用python实现正则匹配检索远端FTP目录下的文件
2015/03/25 Python
Python使用lxml模块和Requests模块抓取HTML页面的教程
2016/05/16 Python
详解python中的Turtle函数库
2018/11/19 Python
对python 中re.sub,replace(),strip()的区别详解
2019/07/22 Python
Python实现队列的方法示例小结【数组,链表】
2020/02/22 Python
Selenium向iframe富文本框输入内容过程图解
2020/04/10 Python
2021年值得向Python开发者推荐的VS Code扩展插件
2021/01/25 Python
matplotlib bar()实现百分比堆积柱状图
2021/02/24 Python
创建精神文明单位实施方案
2014/03/08 职场文书
放飞中国梦演讲稿
2014/04/23 职场文书
标准版离职证明书
2014/09/12 职场文书
《妈妈别哭,有我在》读后感3篇
2020/01/13 职场文书
Python的这些库,你知道多少?
2021/06/09 Python
Vue的列表之渲染,排序,过滤详解
2022/02/24 Vue.js