用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 学习笔记 选择器之四
Jul 23 Javascript
Jquery chosen动态设置值实例介绍
Aug 08 Javascript
js window.print实现打印特定控件或内容
Sep 16 Javascript
javascript ajax 仿百度分页函数
Oct 29 Javascript
JavaScript数组对象赋值用法实例
Aug 04 Javascript
JavaScript 定时器 SetTimeout之定时刷新窗口和关闭窗口(代码超简单)
Feb 26 Javascript
详解js运算符单竖杠“|”与“||”的用法和作用介绍
Nov 04 Javascript
input 标签实现输入框带提示文字效果(两种方法)
Oct 09 Javascript
Angular2.0实现modal对话框的方法示例
Feb 18 Javascript
vue.js 实现点击按钮动态添加li的方法
Sep 07 Javascript
vue spa应用中的路由缓存问题与解决方案
May 31 Javascript
Vue 防止短时间内连续点击后多次触发请求的操作
Nov 11 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学习笔记 数组的常用函数
2011/06/13 PHP
比较好用的PHP防注入漏洞过滤函数代码
2012/04/11 PHP
在Laravel5.6中使用Swoole的协程数据库查询
2018/06/15 PHP
PHP hex2bin()函数用法讲解
2019/02/25 PHP
jQuery源码分析-05异步队列 Deferred 使用介绍
2011/11/14 Javascript
JQuery中使用Ajax赋值给全局变量异常的解决方法
2014/01/10 Javascript
在JS中解析HTML字符串示例代码
2014/04/16 Javascript
JS实现仿google、百度搜索框输入信息智能提示的实现方法
2015/04/20 Javascript
jquery简单实现图片切换效果的方法
2015/05/12 Javascript
弹出遮罩层后禁止滚动效果【实现代码】
2016/04/29 Javascript
js实现无缝滚动图(可控制当前滚动的方向)
2017/02/22 Javascript
Node.js使用orm2进行update操作时关联字段无法修改的解决方法
2017/06/13 Javascript
react-native使用react-navigation进行页面跳转导航的示例
2017/09/07 Javascript
利用HBuilder打包前端开发webapp为apk的方法
2017/11/13 Javascript
AngularJS $http post 传递参数数据的方法
2018/10/09 Javascript
js事件触发操作实例分析
2019/06/21 Javascript
JavaScript实现字符串与HTML格式相互转换
2020/03/17 Javascript
学习 Vue.js 遇到的那些坑
2021/02/02 Vue.js
推荐下python/ironpython:从入门到精通
2007/10/02 Python
Python学习笔记(二)基础语法
2014/06/06 Python
Python注释详解
2016/06/01 Python
PyQt5 实现给窗口设置背景图片的方法
2019/06/13 Python
Python 元组操作总结
2019/09/18 Python
PyQt5中向单元格添加控件的方法示例
2020/03/24 Python
纯CSS3实现带动画效果导航菜单无需js
2013/09/27 HTML / CSS
Html5原生拖拽相关事件简介以及基础实现
2020/11/19 HTML / CSS
美国家喻户晓的保健品品牌:Vitamin World(维他命世界)
2016/08/19 全球购物
英国Zoro工具:手动工具,电动工具和个人防护用品
2016/11/02 全球购物
智能钱包:Ekster
2019/11/21 全球购物
感恩教师节演讲稿
2014/09/03 职场文书
民间借贷协议书范本
2014/10/01 职场文书
青年岗位能手事迹材料
2014/12/23 职场文书
2015年信访工作总结
2015/04/07 职场文书
2019年中学生的思想品德评语集锦
2019/12/19 职场文书
go 实现简易端口扫描的示例
2021/05/22 Golang
Win11安全功能升级:内置防网络钓鱼功能
2022/04/08 数码科技