用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 文档的编码问题解决
Mar 01 Javascript
js事件(Event)知识整理
Oct 11 Javascript
JS基于cookie实现来宾统计记录访客信息的方法
Aug 04 Javascript
详解js中常规日期格式处理、月历渲染和倒计时函数
Dec 28 Javascript
Html5 js实现手风琴效果
Apr 17 Javascript
AngularJS框架中的双向数据绑定机制详解【减少需要重复的开发代码量】
Jan 19 Javascript
微信小程序联网请求的轮播图
Jul 07 Javascript
easyui简介_动力节点Java学院整理
Jul 14 Javascript
ReactNative之FlatList的具体使用方法
Nov 29 Javascript
Vue表情输入组件 微信face表情组件
Feb 11 Javascript
vue实现鼠标移入移出事件代码实例
Mar 27 Javascript
全局安装 Vue cli3 和 继续使用 Vue-cli2.x操作
Sep 08 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
Win下如何安装PHP的APC拓展
2013/08/07 PHP
PHP正则表达式入门教程(推荐)
2016/05/18 PHP
PHP redis实现超迷你全文检索
2017/03/04 PHP
Ajax中的JSON格式与php传输过程全面解析
2017/11/14 PHP
php慢查询日志和错误日志使用详解
2021/02/27 PHP
js兼容标准的表格变色效果
2008/06/28 Javascript
js一组验证函数
2008/12/20 Javascript
javascript 动态生成私有变量访问器
2009/12/06 Javascript
ymPrompt的doHandler方法来实现获取子窗口返回值的方法
2010/06/25 Javascript
JavaScript实现的一个日期格式化函数分享
2014/12/06 Javascript
JS如何生成一个不重复的ID的函数
2016/12/25 Javascript
原生ajax处理json格式数据的实例代码
2016/12/25 Javascript
JS组件系列之MVVM组件 vue 30分钟搞定前端增删改查
2017/04/28 Javascript
原生js 封装get ,post, delete 请求的实例
2017/08/11 Javascript
JavaScript常见JSON操作实例分析
2018/08/08 Javascript
vue刷新页面时去闪烁提升用户体验效果的实现方法
2018/12/10 Javascript
[02:53]DOTA2英雄昆卡基础教程
2013/11/25 DOTA
[02:36]DOTA2上海特锦赛 回忆电竞生涯的重要瞬间
2016/03/25 DOTA
ubuntu安装mysql pycharm sublime
2018/02/20 Python
使用python脚本实现查询火车票工具
2018/07/19 Python
python 2.7 检测一个网页是否能正常访问的方法
2018/12/26 Python
python利用selenium进行浏览器爬虫
2019/04/25 Python
Django框架封装外部函数示例
2019/05/28 Python
python os.fork() 循环输出方法
2019/08/08 Python
python 引用传递和值传递详解(实参,形参)
2020/06/05 Python
python转化excel数字日期为标准日期操作
2020/07/14 Python
python3爬虫中多线程进行解锁操作实例
2020/11/25 Python
CSS3实现背景透明文字不透明的示例代码
2018/06/25 HTML / CSS
皇家道尔顿官网:Royal Doulton
2017/12/06 全球购物
爱他美官方海外旗舰店:Aptamil奶粉
2017/12/22 全球购物
耐克中国官方商城:Nike中国
2018/10/18 全球购物
Joseph官网:英国小众奢侈品牌
2019/05/17 全球购物
初中科学教学反思
2014/01/21 职场文书
学生宿舍管理制度
2014/01/30 职场文书
大专学生求职信
2014/07/04 职场文书
男方婚礼答谢词
2015/01/20 职场文书