用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 提交值不为空的元素示例代码
May 10 Javascript
jQuery实用函数用法总结
Aug 29 Javascript
让javascript加载速度倍增的方法(解决JS加载速度慢的问题)
Dec 12 Javascript
JavaScript中的toDateString()方法使用详解
Jun 12 Javascript
在JavaScript应用中使用RequireJS来实现延迟加载
Jul 01 Javascript
JavaScript数组的定义及数字操作技巧
Jun 06 Javascript
利用jQuery插件imgAreaSelect实现获得选择域的图像信息
Dec 02 Javascript
微信小程序的部署方法步骤
Sep 04 Javascript
vue中v-show和v-if的异同及v-show用法
Jun 06 Javascript
jquery实现聊天机器人
Feb 08 jQuery
JavaScript监听一个DOM元素大小变化
Apr 26 Javascript
JavaScript TAB栏切换效果的示例
Nov 05 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将DateTime对象转化为友好时间显示的实现代码
2011/09/20 PHP
php下载文件源代码(强制任意文件格式下载)
2014/05/09 PHP
jquery+php实现导出datatables插件数据到excel的方法
2015/07/06 PHP
thinkPHP5.1框架使用SemanticUI实现分页功能示例
2019/08/03 PHP
laravel 中某一字段自增、自减的例子
2019/10/11 PHP
jQuery.query.js 取参数的两点问题分析
2012/08/06 Javascript
JQuery文字列表向上滚动的代码
2013/11/13 Javascript
js打开新窗口方法整理
2014/02/17 Javascript
jQuery操作cookie方法实例教程
2014/11/25 Javascript
js+HTML5实现canvas多种颜色渐变效果的方法
2015/06/05 Javascript
javascript实现的简单计时器
2015/07/19 Javascript
jQuery遮罩层效果实例分析
2016/01/14 Javascript
JS判断iframe是否加载完成的方法
2016/08/03 Javascript
js实现精确到毫秒的倒计时效果
2016/08/05 Javascript
js实现键盘自动打字效果
2016/12/23 Javascript
用director.js实现前端路由使用实例
2017/01/27 Javascript
vue滚动轴插件better-scroll使用详解
2017/10/17 Javascript
vue移动UI框架滑动加载数据的方法
2018/03/12 Javascript
使用JavaScript保存文本文件到本地的两种方法
2019/01/22 Javascript
详解JavaScript中的链式调用
2020/11/27 Javascript
Python 过滤字符串的技巧,map与itertools.imap
2008/09/06 Python
python中global与nonlocal比较
2014/11/21 Python
Pthon批量处理将pdb文件生成dssp文件
2015/06/21 Python
python:接口间数据传递与调用方法
2018/12/17 Python
Python read函数按字节(字符)读取文件的实现
2019/07/03 Python
详解Python二维数组与三维数组切片的方法
2019/07/18 Python
Python: 传递列表副本方式
2019/12/19 Python
python关于变量名的基础知识点
2020/03/03 Python
PyCharm License Activation激活码失效问题的解决方法(图文详解)
2020/03/12 Python
Django调用百度AI接口实现人脸注册登录代码实例
2020/04/23 Python
基于HTML5 WebGL的3D机房的示例
2018/03/16 HTML / CSS
Coltorti Boutique官网:来自意大利的设计师品牌买手店
2018/11/09 全球购物
华为菲律宾官方网站:HUAWEI Philippines
2021/02/23 全球购物
如何写自我鉴定
2014/03/19 职场文书
学习雷锋演讲稿
2014/05/10 职场文书
如何用Navicat操作MySQL
2021/05/12 MySQL