用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 相关文章推荐
jquery实现无限分级横向导航菜单的方法
Mar 12 Javascript
微信小程序(三):网络请求
Jan 13 Javascript
JavaScript 数据类型详解
Mar 13 Javascript
Bootstrap如何激活导航状态
Mar 22 Javascript
vue2.0 如何在hash模式下实现微信分享
Jan 22 Javascript
原生JS实现图片懒加载之页面性能优化
Apr 26 Javascript
微信小程序云开发之云函数详解
May 16 Javascript
JS数组及对象遍历方法代码汇总
Jun 16 Javascript
JS跨浏览器解析XML应用过程详解
Oct 16 Javascript
解决ant Design中this.props.form.validateFields未执行的问题
Oct 27 Javascript
Javascript节流函数throttle和防抖函数debounce
Dec 03 Javascript
四十九个javascript小知识实用技巧
Nov 20 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 404错误页面实现代码
2009/06/22 PHP
mac环境中使用brew安装php5.5.15
2014/08/18 PHP
10个简化PHP开发的工具
2014/12/25 PHP
PHP依赖注入(DI)和控制反转(IoC)详解
2017/06/12 PHP
Javascript里使用Dom操作Xml
2006/09/20 Javascript
一个不错的应用,用于提交获取文章内容,不推荐用
2007/03/03 Javascript
jquery实现表格奇数偶数行不同样式(有图为证及实现代码)
2013/01/23 Javascript
js流动式效果显示当前系统时间
2016/05/16 Javascript
原生JS版和jquery版实现checkbox的全选/全不选/点选/行内点选(Mr.Think)
2016/10/29 Javascript
利用Node.js了解与测量HTTP所花费的时间详解
2017/09/22 Javascript
5分钟学会Vue动画效果(小结)
2018/07/21 Javascript
JS判断字符串是否为整数的方法--简单的正则判断
2018/07/23 Javascript
AngularJS修改model值时,显示内容不变的实例
2018/09/13 Javascript
javascript数组的定义及操作实例
2019/11/10 Javascript
python显示天气预报
2014/03/02 Python
python简单实现旋转图片的方法
2015/05/30 Python
深入理解python中的atexit模块
2017/03/07 Python
Django admin美化插件suit使用示例
2017/12/12 Python
python使用Tkinter实现在线音乐播放器
2018/01/30 Python
python3.x提取中文的正则表达式示例代码
2019/07/23 Python
利用python Selenium实现自动登陆京东签到领金币功能
2019/10/31 Python
python使用dlib进行人脸检测和关键点的示例
2020/12/05 Python
用css3写出气球样式的示例代码
2017/09/11 HTML / CSS
HTML5地理定位实例
2014/10/15 HTML / CSS
Net-A-Porter美国官网:全球时尚奢侈品名站
2017/02/11 全球购物
德国运动鞋网上商店:Afew Store
2018/01/05 全球购物
纽约香氛品牌:NEST Fragrance
2018/10/15 全球购物
世界上最大的皮肤科医生拥有和经营的美容网站:LovelySkin
2021/01/03 全球购物
行政部工作岗位职责范本
2014/03/05 职场文书
2014春晚主持词
2014/03/25 职场文书
学雷锋标语
2014/06/25 职场文书
大学生操行评语大全
2014/12/31 职场文书
隐形的翅膀观后感
2015/06/10 职场文书
社会实践心得体会范文
2016/01/14 职场文书
Pygame Event事件模块的详细示例
2021/11/17 Python
Python作用域和名称空间的详细介绍
2022/04/13 Python