Like Share Discussion Bookmark Smile

J.J. Huang   2020-02-14   Node.js   瀏覽次數:次   DMCA.com Protection Status

Node.js | 台灣銀行、分行代碼表和爬蟲分享

需求說明

公司產品新增功能會需要全台灣的銀行代碼及銀行分行代碼(包含農會⋯⋯)。
用於製作銀行及分行下拉選單,大概樣式如下畫面。

資料分析

分析來源”財金資訊股份有限公司-台灣銀行列表

  • [0, 8] = 銀行代碼(分行代碼)
  • 分行代碼前三碼為銀行代碼
  • [8, 28] = 銀行名稱(銀行分行名稱)
  • [28, 34] = 銀行 + 分行名稱縮寫
  • 每筆資料為一行(換行符號)

設計思維

  • 每筆資料使用換行符號做切割 -> Array

  • 抓取前8碼,並移除空白 -> 銀行代碼(分行代碼)

  • 抓取第8碼之後至28 -> 銀行名稱(銀行分行名稱)

  • 判斷抓取的銀行代碼如大於3則表示為分行代碼

    • 根據判斷結果做分類處理,整理出銀行代碼表和分行代碼表

程式碼

該程式碼是小弟撰寫的,網路似乎沒有該台灣銀行代碼的爬蟲腳本,請支持原創,謝謝。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
const request = require("request");
const iconv = require('iconv-lite');
const fs = require('fs');

const bankListUrl = 'https://www.fisc.com.tw/tc/download/twd.txt';

const consoleShow = true;
const writeFile = true;

const bankCodesCrawler = function() {
request({
url: bankListUrl,
encoding: null, // 編碼定義為null
method: "GET"
}, function(error, response, body) {
if (error || !body) {
return;
}

const data = iconv.decode(body, 'BIG5'); // 使用BIG5轉碼
const dataArray = data.split('\r\n'); // 用換行符號將資料拆為陣列

const bankCodes = [];
const bankBranchCodes = {};

// 處理代碼
for (let i = 0; i < dataArray.length; i++) {
let code = dataArray[i].substring(0,8).replace(/\s+/g, "");
let name = dataArray[i].substring(8,28).replace(/\s+/g, "");
if(code.length > 3){
bankBranchCodes[code.substring(0,3)].push('{\"code\": \"'+ code +'\", \"name\": \"' + name + '\"}');
} else {
bankCodes.push('{\"code\": \"'+ code +'\", \"name\": \"' + name + '\"}');
let tempArray = [];
bankBranchCodes[code] = tempArray;
}
}

if(consoleShow){
console.log(bankCodes.sort());
console.log(JSON.stringify(bankBranchCodes));
}

// 寫入文件
if(writeFile){
console.log("準備寫入bankCodes文件");
fs.writeFile('bankCodes.txt', 'var bankCodes = [' + bankCodes.sort() + '];', function(err) {
if (err) {
return console.error(err);
}
console.log("資料寫入bankCodes成功!");
});

console.log("準備寫入bankBranchCodes文件");
fs.writeFile('bankBranchCodes.txt', 'var bankBranchCodes = ' + JSON.stringify(bankBranchCodes), function(err) {
if (err) {
return console.error(err);
}
console.log("資料寫入bankBranchCodes成功!");
});
}

});
};

bankCodesCrawler();

整理好的銀行代碼表

資料整理不易,請支持原創,謝謝。

預覽:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
// 參考資料:https://www.fisc.com.tw/tc/download/twd.txt
// 最後整理時間:2020-02-14

var bankCodes = [
{"code": "000", "name": "中央銀行國庫局             "},
{"code": "004", "name": "臺灣銀行                "},
{"code": "005", "name": "臺灣土地銀行              "},
{"code": "006", "name": "合作金庫商業銀行            "},
{"code": "007", "name": "第一商業銀行              "},
{"code": "008", "name": "華南商業銀行              "},
{"code": "009", "name": "彰化商業銀行              "},
....省略
];

var bankBranchCodes = {
"000": [
{"code": "0000022", "name": "國庫局                 "}
],
"004": [
{"code": "0040037", "name": "營業部                 "},
{"code": "0040059", "name": "公庫部                 "},
{"code": "0040071", "name": "館前分行                "},
{"code": "0040093", "name": "臺南分行                "},
{"code": "0040107", "name": "臺中分行                "},
{"code": "0040118", "name": "高雄分行                "},
{"code": "0040129", "name": "基隆分行                "},
{"code": "0040130", "name": "中興新村分行              "},
{"code": "0040141", "name": "嘉義分行                "},
{"code": "0040152", "name": "新竹分行                "},
....省略
};

下載位置:bankInfo.js


註:以上參考了
財金資訊股份有限公司-台灣銀行列表