remove region and municipality params when searching olx

This commit is contained in:
Bilal Catic
2019-09-10 11:19:42 +02:00
parent 7fc932350e
commit 93fe5ee870
2 changed files with 89 additions and 33 deletions

View File

@@ -27,8 +27,8 @@ module.exports = class OlxCrawler {
async crawl() {
const filteredResults = [];
const realestateRequests = await allRERequest();
const urls = this.createRequestUrls(realestateRequests);
const realEstateRequests = await allRERequest();
const urls = this.createRequestUrls(realEstateRequests);
let results = await this.indexPages(
urls,
this.fromPage,
@@ -65,24 +65,94 @@ module.exports = class OlxCrawler {
return [];
}
createRequestUrls(realestateRequests) {
createRequestUrls(realEstateRequests) {
const urls = [];
for (const request of realestateRequests) {
const realsestateType =
"kategorija=" +
getRealEstateTypeEnum(request.realEstateType).olxCategory;
const region = "kanton=" + getRegion(request.region).olxid;
const municipality =
"grad%5B%5D=" +
getMunicipality(request.region, request.municipality).olxid;
const sizeMin = "kvadrata_min=" + request.sizeMin;
const sizeMax = "kvadrata_max=" + request.sizeMax;
const priceMin = "od=" + request.priceMin;
const priceMax = "do=" + request.priceMax;
for (const request of realEstateRequests) {
const {
realEstateType,
region,
sizeMin,
sizeMax,
priceMin,
priceMax
} = request;
const urlRealEstateParams = [
{
paramName: "kanton",
paramValue: region,
useParam: false
},
{
paramName: "kategorija",
paramValue: getRealEstateTypeEnum(realEstateType).olxid,
useParam: true
},
{
paramName: "kvadrata_min",
paramValue: sizeMin,
useParam: true
},
{
paramName: "kvadrata_max",
paramValue: sizeMax,
useParam: true
},
{
paramName: "od",
paramValue: priceMin,
useParam: true
},
{
paramName: "do",
paramValue: priceMax,
useParam: true
}
];
const urlResultsParams = [
{
paramName: "vrstapregleda",
paramValue: "tabela",
useParam: true
},
{
paramName: "sort_order",
paramValue: "desc",
useParam: true
},
{
paramName: "vrsta",
paramValue: "samoprodaja",
useParam: true
},
{
paramName: "stranica",
paramValue: "0",
useParam: true
}
];
const paramsReduceFunction = (accumulatedValue, currentParam) => {
const { paramName, paramValue, useParam } = currentParam;
if (useParam) {
return `${accumulatedValue}&${paramName}=${paramValue}`;
} else {
return accumulatedValue;
}
};
const reducedRealEstateParams = urlRealEstateParams.reduce(
paramsReduceFunction,
""
);
const reducedResultsParams = urlResultsParams.reduce(
paramsReduceFunction,
""
);
const olxUrl = {
url: `https://www.olx.ba/pretraga?${realsestateType}&id=2&stanje=0&vrstapregleda=tabela&sort_order=desc&${region}&${municipality}&${priceMin}&${priceMax}&vrsta=samoprodaja&${sizeMin}&${sizeMax}&stranica=`,
url: `https://www.olx.ba/pretraga?${reducedRealEstateParams}${reducedResultsParams}`,
email: request.email,
uuid: request.uniqueId,
hrefs: this.hrefs