昨天狗東的LAMY鋼筆又在搞活動,然而看到的時候已經漲回了原價。一怒之下,寫了一個JS腳本自動查詢促銷信息並經過微信來通知我。程序員
數據採集方面,咱們使用Node.js來實現一個爬蟲,並定時對頁面進行訪問刷新,隨時監控數據。服務器
使用到的依賴以下:微信
cheerio :JS網頁解析,語法相似JQuery網絡
superagent :網絡請求庫工具
system-sleep :調用系統sleep網站
moment :對時間進行格式化,方便打Logui
微信通知咱們經過Server醬實現,這是個什麼東西呢?url
Server醬日誌
是什麼code
「Server醬」,英文名「ServerChan」,是一款「程序員」和「服務器」之間的通訊軟件。
說人話?就是從服務器推報警和日誌到手機的工具。
開通並使用上它,只須要一分鐘:
登入:用GitHub帳號登入網站,就能得到一個SCKEY(在「發送消息」頁面)
綁定:點擊「微信推送」,掃碼關注同時便可完成綁定
發消息:往 http://sc.ftqq.com/SCKEY.send 發GET請求,就能夠在微信裏收到消息啦
Server醬使用方法就是這麼簡單了,註冊、綁定結束後你會拿到一個URL,咱們只須要向這個URL發送消息就能夠在微信收到通知了。
var cheerio = require('cheerio'); var superagent = require('superagent') var sleep = require('system-sleep'); var moment = require('moment') //URLs var base = 'http://http://www.baicaio.com/' var collection = 'http://www.baicaio.com/index-index-type--tab-isnice-dss-cc' var wechat = 'http://sc.ftqq.com/ ##Your own url.send' //哦莫西羅伊,也就是關注的關鍵詞咯 var omxly = ['凌美', '耳機', '鋼筆', '鼠標', '顯示器', '電腦', '手機', '電視'] //通知過的內容的href,防止屢次通知相同內容 var notificated = [] function refresh(callback) { console.log('檢查優惠信息 '+ moment().format('MMMM Do YYYY, h:mm:ss a')) var items = [] superagent .get(collection) .end(function (err, res) { var $ = cheerio.load(res.text) $('#C_drc ').find('li').each(function (idx, element) { $element = $(element) var href = $element.find('h2 > a').attr('href') var title = $element.find('h2 > a').attr('title') var price = $element.find('h2 > a > em').text() items.push({ href: href, title: title, price: price }) }) check(items, callback) }) } function check(items, callback) { for (index in items) { var item = items[index] for (word_index in omxly) { var flag = true var word = omxly[word_index] if (String(item.title).indexOf(omxly[word_index]) !== -1) { for (href_index in notificated) { if (notificated[href_index] == item.href) { flag = false callback() break } } if (flag) { console.log('發現關注商品') console.log(item.title, item.price) notificated.push(item.href) wechatNotification(word,item.title, item.price, item.href, callback) } } } } } function wechatNotification(word,title, desc, url, callback) { var text = '主人,發現了你喜歡的:_' + '' + word desc = '['+ title + ']('+ base + url +')\n\n' + desc desc += '\n\n' desc += '時間:'+moment().format('MMMM Do YYYY, h:mm:ss a') superagent .get(wechat) .query({text: text}) .query({desp: desc}) .end(function (err, sres) { callback() }) } while (true) { refresh({}) sleep(5 * 1000) }