· 8 years ago · Jul 03, 2018, 04:30 PM
1var path = require("path");
2var http = require("http");
3var archiver = require("archiver");
4var request = require("request");
5var cheerio = require("cheerio");
6var fs = require("fs");
7var mysql = require("mysql2/promise");
8
9
10
11var currentId = 1;
12var maxId = 3;
13var searchResults = [];
14
15const RequestCreditUnion = (id) =>
16{
17 var ro =
18 {
19 "url": "https://mapping.ncua.gov/SingleResult.aspx?ID=" + id + "&IsCorpCU=0"
20 };
21
22 request(ro, RequestCreditUnionCallback);
23};
24
25const RequestCreditUnionCallback = (error, response, body) =>
26{
27 var dom = cheerio.load(body);
28 var tds = dom("td");
29
30 var creditUnionName = ParseLabelData("Credit Union Name:", dom, tds);
31 var charterNumber = ParseLabelData("Charter Number:", dom, tds);
32 var creditUnionType = ParseLabelData("Credit Union Type:", dom, tds);
33 var creditUnionStatus = ParseLabelData("Credit Union Status:", dom, tds);
34 var corporateCreditUnion = ParseLabelData("Corporate Credit Union:", dom, tds);
35 var creditUnionCharterYear = ParseLabelData("Credit Union Charter Year:", dom, tds);
36 var currentCharterIssueDate = ParseLabelData("Current Charter Issue Date:", dom, tds);
37 var dateInsured = ParseLabelData("Date Insured:", dom, tds);
38 var charterState = ParseLabelData("Charter State:", dom, tds);
39 var region = ParseLabelData("Region:", dom, tds);
40 var fieldOfMembershipType = ParseLabelData("Field of Membership Type:", dom, tds);
41 var lowIncomeDesignation = ParseLabelData("Low Income Designation:", dom, tds);
42 var fHLB = ParseLabelData("Member of FHLB:", dom, tds);
43 var assets = ParseLabelData("Assets:", dom, tds);
44 var peerGroup = ParseLabelData("Peer Group:", dom, tds);
45 var numberOfMembers = ParseLabelData("Number of Members:", dom, tds);
46 var address = ParseLabelData("Address:", dom, tds);
47 var zipCode = ParseLabelData("City, State Zip code:", dom, tds);
48 var country = ParseLabelData("Country:", dom, tds);
49 var county = ParseLabelData("County:", dom, tds);
50 var phone = ParseLabelData("Phone:", dom, tds);
51 var website = ParseLabelData("Website:", dom, tds);
52 var ceo = ParseLabelData("CEO/Manager:", dom, tds);
53
54
55 console.log("Pulled " + currentId + ", " + creditUnionName + "," + charterNumber + "," + creditUnionType + "," + creditUnionStatus + "," + corporateCreditUnion + "," + creditUnionCharterYear + "," + currentCharterIssueDate + "," + dateInsured + "," + charterState + "," +
56 region + "," + fieldOfMembershipType + "," + lowIncomeDesignation + "," + fHLB + "," + assets + "," + peerGroup + "," + numberOfMembers + "," + address + "," + zipCode + "," + country + "," + county + "," + phone + "," + website + "," + ceo);
57
58 searchResults.push
59 (
60 [
61
62 creditUnionName,
63 charterNumber,
64 creditUnionType,
65 creditUnionStatus,
66 corporateCreditUnion,
67 creditUnionCharterYear,
68 currentCharterIssueDate,
69 dateInsured,
70 charterState,
71 region,
72 fieldOfMembershipType,
73 lowIncomeDesignation,
74 fHLB,
75 assets,
76 peerGroup,
77 numberOfMembers,
78 address,
79 zipCode,
80 country,
81 county,
82 phone,
83 website,
84 ceo
85 ]
86 );
87
88
89 console.log(searchResults);
90
91
92 if (currentId < maxId - 1)
93 {
94 currentId = currentId + 1;
95 RequestCreditUnion(currentId);
96 }
97
98
99
100
101};
102
103const ParseLabelData = (label, dom, tds) =>
104{
105 var value = null;
106
107 tds.each
108 (
109 (i, elem) =>
110 {
111 var e = dom(elem);
112
113 if (e.text() === label)
114 {
115 value = e.next().text().trim();
116 return false;
117 }
118
119 return true;
120 }
121 );
122
123 return value;
124};
125
126
127
128
129
130
131var Run = async function()
132{
133
134
135
136
137var conn = await mysql.createConnection
138
139 (
140 {
141 "host": "127.0.0.1",
142 "user": "celeryman727",
143 "password": "",
144 "database": "cutc"
145 }
146 );
147
148 var createTableSql = "CREATE TABLE IF NOT EXISTS `credit_union_data` ("
149
150 createTableSql += "`creditUnionName` TEXT,";
151 createTableSql += "`charterNumber` TEXT,";
152 createTableSql += "`creditUnionType` TEXT,";
153 createTableSql += "`creditUnionStatus` TEXT,";
154 createTableSql += "`corporateCreditUnion` TEXT,";
155 createTableSql += "`creditUnionCharterYear` TEXT,";
156 createTableSql += "`currentCharterIssueDate` TEXT,";
157 createTableSql += "`dateInsured` TEXT,";
158 createTableSql += "`charterState` TEXT,";
159 createTableSql += "`region` TEXT,";
160 createTableSql += "`fieldOfMembershipType` TEXT,";
161 createTableSql += "`lowIncomeDesignation` TEXT,";
162 createTableSql += "`fHLB` TEXT,";
163 createTableSql += "`assets` TEXT,";
164 createTableSql += "`peerGroup` TEXT,";
165 createTableSql += "`numberOfMembers` TEXT,";
166 createTableSql += "`address` TEXT,";
167 createTableSql += "`zipCode` TEXT,";
168 createTableSql += "`country` TEXT,";
169 createTableSql += "`county` TEXT,";
170 createTableSql += "`phone` TEXT,";
171 createTableSql += "`website` TEXT,";
172 createTableSql += "`ceo` TEXT)";
173
174
175 result = await conn.execute(createTableSql, []);
176 result = await conn.execute("TRUNCATE `credit_union_data`", null);
177
178 for (let i = 0; i < searchResults.length; i++)
179 {
180 console.log("adding search result " + i);
181 result = await conn.execute
182 (
183 "INSERT INTO `credit_union_data` (`creditUnionName`, `charterNumber`, `creditUnionType`, `creditUnionStatus`, `corporateCreditUnion`, `creditUnionCharterYear`, `currentCharterIssueDate`, `dateInsured`, `charterState`, `region`, `fieldOfMembershipType`, `lowIncomeDesignation`, `fHLB`, `assets`, `peerGroup`, `numberOfMembers`, `address`, `zipCode`, `country`, `county`, `phone`, `website`, `ceo`) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",
184 [
185 searchResults[i]["creditUnionName"],
186 searchResults[i]["charterNumber"],
187 searchResults[i]["creditUnionType"],
188 searchResults[i]["creditUnionStatus"],
189 searchResults[i]["corporateCreditUnion"],
190 searchResults[i]["creditUnionCharterYear"],
191 searchResults[i]["currentCharterIssueDate"],
192 searchResults[i]["dateInsured"],
193 searchResults[i]["charterState"],
194 searchResults[i]["region"],
195 searchResults[i]["fieldOfMembershipType"],
196 searchResults[i]["lowIncomeDesignation"],
197 searchResults[i]["fHLB"],
198 searchResults[i]["assets"],
199 searchResults[i]["peerGroup"],
200 searchResults[i]["numberOfMembers"],
201 searchResults[i]["address"],
202 searchResults[i]["zipCode"],
203 searchResults[i]["country"],
204 searchResults[i]["county"],
205 searchResults[i]["phone"],
206 searchResults[i]["website"],
207 searchResults[i]["ceo"],
208
209
210 ]
211 );
212 }
213
214 console.log(result);
215
216 conn.destroy();
217
218};
219
220
221Run();
222RequestCreditUnion();