factbook
Version:
Serves as an independent data scraping module, complete with ontology and full scraping ability for the CIA World Factbook site
61 lines (60 loc) • 3.25 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
var funktologies_1 = require("funktologies");
var getUuid = require("uuid-by-string");
var constants_1 = require("../constants/constants");
var globalStore_1 = require("../constants/globalStore");
function getArea(cheerioElem, country, countryId) {
var objectProperties = globalStore_1.store.countries[countryId].objectProperties;
var map = funktologies_1.getRelation(objectProperties, constants_1.consts.ONTOLOGY.HAS_DOMAIN_AREA);
var daId = constants_1.consts.ONTOLOGY.INST_DOMAIN_AREA + getUuid(country);
var objectProp = {};
var bailOut = true;
cheerioElem('#field-area').each(function () {
if (!map) {
if (globalStore_1.store.domainAreas[daId]) {
objectProp[constants_1.consts.ONTOLOGY.HAS_DOMAIN_AREA] = globalStore_1.store.domainAreas[daId];
}
else {
objectProp = funktologies_1.entityMaker(constants_1.consts.ONTOLOGY.HAS_DOMAIN_AREA, constants_1.consts.ONTOLOGY.ONT_DOMAIN_AREA, daId, "Area of Domain for " + country);
globalStore_1.store.domainAreas[daId] = objectProp[constants_1.consts.ONTOLOGY.HAS_DOMAIN_AREA];
}
map = objectProp[constants_1.consts.ONTOLOGY.HAS_DOMAIN_AREA];
globalStore_1.store.countries[countryId].objectProperties.push(funktologies_1.entityRefMaker(constants_1.consts.ONTOLOGY.HAS_DOMAIN_AREA, objectProp));
}
bailOut = false;
});
if (bailOut) {
return;
}
cheerioElem('#field-area > div.category_data.subfield.numeric').each(function (index, element) {
var areaSwitch = cheerioElem(element).find('span.subfield-name').text().trim();
var areaData = cheerioElem(element).find('span.subfield-number').text().trim();
switch (areaSwitch) {
case 'total:':
map.datatypeProperties[constants_1.consts.ONTOLOGY.DT_TOTAL_AREA] = Number(areaData.replace(/,|[a-z]/g, '').trim()) || null;
break;
case 'land:':
map.datatypeProperties[constants_1.consts.ONTOLOGY.DT_LAND_AREA] = Number(areaData.replace(/,|[a-z]/g, '').trim()) || null;
break;
case 'water:':
map.datatypeProperties[constants_1.consts.ONTOLOGY.DT_WATER_AREA] = Number(areaData.replace(/,|[a-z]/g, '').trim()) || null;
break;
}
});
cheerioElem('#field-area > div > span.category_data').each(function (index, element) {
var areaRank = cheerioElem(element).find('a').text().trim();
if (areaRank) {
map.datatypeProperties[constants_1.consts.ONTOLOGY.DT_AREA_RANK] = Number(areaRank);
}
});
map.datatypeProperties[constants_1.consts.ONTOLOGY.DT_UNIT] = 'sq km';
cheerioElem('#field-area-comparative').each(function (index, element) {
var areaGrd = cheerioElem(element).find('div.category_data.subfield.text').text().trim().replace(/\\n/g, '');
if (areaGrd) {
map.datatypeProperties[constants_1.consts.ONTOLOGY.DT_AREA_COMPARATIVE] = areaGrd;
}
});
}
exports.getArea = getArea;
;
;