-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathusZipCodesExtractor.js
93 lines (84 loc) · 2.42 KB
/
usZipCodesExtractor.js
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
const axios = require('axios');
const cheerio = require('cheerio');
const fs = require('fs');
const states = [
{ "AL": "Alabama" },
{ "AK": "Alaska" },
{ "AZ": "Arizona" },
{ "AR": "Arkansas" },
{ "CA": "California" },
{ "CO": "Colorado" },
{ "CT": "Connecticut" },
{ "DE": "Delaware" },
{ "DC": "District Of Columbia" },
{ "FL": "Florida" },
{ "GA": "Georgia" },
{ "HI": "Hawaii" },
{ "ID": "Idaho" },
{ "IL": "Illinois" },
{ "IN": "Indiana" },
{ "IA": "Iowa" },
{ "KS": "Kansas" },
{ "KY": "Kentucky" },
{ "LA": "Louisiana" },
{ "ME": "Maine" },
{ "MD": "Maryland" },
{ "MA": "Massachusetts" },
{ "MI": "Michigan" },
{ "MN": "Minnesota" },
{ "MS": "Mississippi" },
{ "MO": "Missouri" },
{ "MT": "Montana" },
{ "NE": "Nebraska" },
{ "NV": "Nevada" },
{ "NH": "New Hampshire" },
{ "NJ": "New Jersey" },
{ "NM": "New Mexico" },
{ "NY": "New York" },
{ "NC": "North Carolina" },
{ "ND": "North Dakota" },
{ "OH": "Ohio" },
{ "OK": "Oklahoma" },
{ "OR": "Oregon" },
{ "PA": "Pennsylvania" },
{ "RI": "Rhode Island" },
{ "SC": "South Carolina" },
{ "SD": "South Dakota" },
{ "TN": "Tennessee" },
{ "TX": "Texas" },
{ "UT": "Utah" },
{ "VT": "Vermont" },
{ "VA": "Virginia" },
{ "WA": "Washington" },
{ "WV": "West Virginia" },
{ "WI": "Wisconsin" },
{ "WY": "Wyoming" }
];
const zipCodeList = [];
const fetchZipCodes = async (state) => {
const stateName = Object.keys(state)[0];
const url = `https://simplemaps.com/us-zips/${stateName}`;
try {
const response = await axios.get(url);
if (response.status === 200) {
const htmlContent = response.data;
const $ = cheerio.load(htmlContent);
const zipCodes = [];
$('a[title="Click to learn more"]').each((_, element) => {
zipCodes.push($(element).text());
});
zipCodeList.push({ [stateName]: zipCodes });
}
} catch (error) {
console.error(`Error fetching data for ${stateName}:`, error.message);
}
};
const main = async () => {
for (const state of states) {
await fetchZipCodes(state);
}
// Write the result to a file
fs.writeFileSync("zip_codes.txt", JSON.stringify(zipCodeList, null, 2));
console.log('Zip codes have been successfully saved to zip_codes.txt');
};
main();