remove region and municipality params when searching olx
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user