Node.js 爬蟲練習 - 牌告匯率
在網路上亂逛的時候,發現可以利用 Node.js 來爬蟲,
那麼,就讓我們拿臺銀的匯率網頁來做練習吧!
這次的練習需要以下 4 個套件:
支援 Windows / macOS / Linux,可至官網下載。
安裝完成後,開啟命令列檢查環境變數設定是否正常:
(以 Windows 為例,Start -> 附屬應用程式 -> 命令提示字元)
輸入:
安裝指令:
特色:解析速度非常快!
安裝指令:
安裝指令:
將以上程式碼存為 index.js 並放置於目錄中
利用上述指令安裝套件後,
執行
執行結果如下:
[註] 因為 VSCode debug 模式執行一次後就會結束程序,
所以無法執行此定時執行功能喔
第一個爬蟲程式完成囉~~
實際上要當專業爬蟲還有很多咩剛,
往後再來深入研究
那麼,就讓我們拿臺銀的匯率網頁來做練習吧!
這次的練習需要以下 4 個套件:
嗯,這是必備條件 (廢話 XD
支援 Windows / macOS / Linux,可至官網下載。
安裝完成後,開啟命令列檢查環境變數設定是否正常:
(以 Windows 為例,Start -> 附屬應用程式 -> 命令提示字元)
輸入:
node --version目前最新的穩定版本為:8.11.1
模擬瀏覽器,發送 http 請求(也支援 https )、接收回應,用來取得網頁內容
安裝指令:
npm install request
提供 jQuery方式取得 DOM 結構內容。
特色:解析速度非常快!
安裝指令:
npm install cheerio
Node.js 的排程套件,可在指定時間、期間、定時執行。
安裝指令:
npm install node-schedule
完整程式碼
// import necessary libraries const request = require('request'); const cheerio = require('cheerio'); const schedule = require('node-schedule'); // seed for web crawling const url = "http://rate.bot.com.tw/xrt?Lang=zh-TW"; /** * get the content for the url and parse it */ function getCurrency() { // send http request request(url, (err, res, body) => { // convert the content string to DOM var $ = cheerio.load(body); // get the rate element $("td.rate-content-cash").each(function (idx, element) { let $element = $(element); if ($element.data("table") === "本行現金賣出" && !!+$element.text()) { // name of currency var currency = $($element.siblings()[0]).text().trim(); // name is duplicated, we only need one var currency = currency.split(" ")[0]; switch(currency){ case "日圓": // we are interesting in console.log(currency + "\t:" + $element.text()); break; default: break; } } }); // get system beep (just for fun XD) process.stdout.write('\x07'); console.log("==================================================="); }); } function scheduleCronstyle(){ // parse every 5 seconds schedule.scheduleJob('*/5 * * * * *', function(){ getCurrency(); }); } scheduleCronstyle();
使用方法:
建立新目錄(例:D:\spider-currency),將以上程式碼存為 index.js 並放置於目錄中
利用上述指令安裝套件後,
執行
node index.js
執行結果如下:
[註] 因為 VSCode debug 模式執行一次後就會結束程序,
所以無法執行此定時執行功能喔
第一個爬蟲程式完成囉~~
實際上要當專業爬蟲還有很多咩剛,
往後再來深入研究
留言