为什么我的数组覆盖,而不是使它一个数组与对象里面?



我一直在研究刮刀功能。

现在从这个组件获取数据:

const cheerio = require('cheerio');
const axios = require('axios');
const parsing = require('./parseData');
exports.olxScraper = () => {
const url =
'https://www.olx.ba/pretraga?vrsta=samoprodaja&kategorija=23&sort_order=desc&kanton=9&sacijenom=sacijenom&stranica=1';
const getRawData = async () => {
try {
await axios.get(url).then((res) => {
const $ = cheerio.load(res.data);
$('div[id="rezultatipretrage"] > div')
.not('div[class="listitem artikal obicniArtikal  i index"]')
.not('div[class="obicniArtikal"]')
.each((index, element) => {
$('span[class="prekrizenacijena"]').remove();
const getLink = $(element)
.find('div[class="naslov"] > a')
.attr('href');
const getDescription = $(element)
.find('div[class="naslov"] > a > p')
.text();
const getPrice = $(element)
.find('div[class="datum"] > span')
.text()
.replace(/.| ?KM$/g, '')
.replace(' ', '');
const getPicture = $(element)
.find('div[class="slika"] > img')
.attr('src');
parsing.parseData(getLink, getDescription, getPrice, getPicture);
});
});
} catch (error) {
console.log(error);
}
};
getRawData();
};
exports.santScraper = () => {
const url = `https://www.sant.ba/pretraga/prodaja-1/tip-2/cijena_min-20000/stranica-1`;
const getRawData = async () => {
try {
await axios.get(url).then((response) => {
const $ = cheerio.load(response.data);
$('div[class="col-xxs-12 col-xss-6 col-xs-6 col-sm-6 col-lg-4"]').each(
(index, element) => {
const getLink = $(element).find('a[class="re-image"]').attr('href');
const getDescription = $(element).find('a[class="title"]').text();
const getPrice = $(element)
.find('div[class="prices"] > h3[class="price"]')
.text()
.replace(/.| ?KM$/g, '')
.replace(',', '.');
const getPicture = $(element).find('img').attr('data-original');

parsing.parseData(getLink, getDescription, getPrice, getPicture);
}
);
});
} catch (error) {
console.log(console.log(error));
}
};
getRawData();
};
this.olxScraper();
this.santScraper();

因此,它被发送到parseData组件,看起来像这样:

exports.parseData = (getLink, getDescription, getPrice, getPicture) => {
const apartments = [];
let apartment = {
link: getLink,
descr: getDescription,
price: getPrice,
picture: getPicture,
};
apartments.push(apartment);
console.log(apartments);
};

输出如下:

[
{
link: 'https://www.sant.ba/nekretnine/nekretnina-3467-dvosoban-stan-sa-liftom-u-samom-centru-grada-63-m2',
descr: ' dvosoban stan sa liftom u samom centru grada , 63 m2 ',
price: '199000.00',
picture: 'https://www.sant.ba/thumb.php?file=photos/3467/3467_1_1563271355.jpg&maxw=273&maxh=205'
}
]
[
{
link: 'https://www.sant.ba/nekretnine/nekretnina-3689-troiposoban-stan-u-naselju-sunca',
descr: ' Troiposoban stan u naselju Sunca ',
price: '360000.00',
picture: 'https://www.sant.ba/thumb.php?file=photos/3689/3689_1_1612344465.jpg&maxw=273&maxh=205'
}
]
[
{
link: 'https://www.sant.ba/nekretnine/nekretnina-3677-trosoban-renoviran-stan-u-naselju-dolac-malta-73-m2',
descr: ' trosoban, renoviran stan u naselju Dolac malta, 73 m2 ',
price: '150000.00',
picture: 'https://www.sant.ba/thumb.php?file=photos/3677/3677_1_1608550332.jpg&maxw=273&maxh=205'
}
]
[
{
link: 'https://www.sant.ba/nekretnine/nekretnina-3537-cetverosoban-stan-u-novogradnji-sa-prelijepim-pogledom-na-grad-118-38-m2',
descr: ' Četverosoban stan u novogradnji sa prelijepim pogledom na grad, 118,38 m2 ',
price: '538090.37',
picture: 'https://www.sant.ba/thumb.php?file=photos/3537/3537_1_1573217155.jpg&maxw=273&maxh=205'
}
]
[
{
link: 'https://www.sant.ba/nekretnine/nekretnina-3536-trosoban-stan-u-novogradnji-sa-prelijepim-pogledom-na-grad-105-34-m2',
descr: ' Trosoban stan u novogradnji sa prelijepim pogledom na grad, 105,34 m2 ',
price: '478817.70',
picture: 'https://www.sant.ba/thumb.php?file=photos/3536/3536_2_1573216638.jpg&maxw=273&maxh=205'
}
]
[
{
link: 'https://www.sant.ba/nekretnine/nekretnina-3535-luksuzni-cetverosoban-stan-na-cobaniji-117-43m2',
descr: ' Luksuzni četverosoban stan na Čobaniji,117,43m2 ',
price: '533772.19',
picture: 'https://www.sant.ba/thumb.php?file=photos/3535/3535_13_1573215220.jpg&maxw=273&maxh=205'
}
]
[
{
link: 'https://www.sant.ba/nekretnine/nekretnina-3534-trosoban-stan-u-novogradnji-90-m2',
descr: ' trosoban stan u novogradnji, 90 m2 ',
price: '376923.46',
picture: 'https://www.sant.ba/thumb.php?file=photos/3534/3534_8_1573214216.jpg&maxw=273&maxh=205'
}
]
[
{
link: 'https://www.sant.ba/nekretnine/nekretnina-3524-dvosoban-stan-u-naselju-bjelave-55-m2',
descr: ' dvosoban stan u naselju Bjelave ,55 m2 ',
price: '150000.00',
picture: 'https://www.sant.ba/thumb.php?file=photos/3524/3524_1_1571224667.jpg&maxw=273&maxh=205'
}
]
[
{
link: 'https://www.sant.ba/nekretnine/nekretnina-3665-novogradnja-dvosoban-stan-skenderija-72-66-m2',
descr: ' novogradnja, dvosoban stan,Skenderija, 72,66 m2 ',
price: '290640.00',
picture: 'https://www.sant.ba/thumb.php?file=photos/3665/3665_1_1606393537.jpg&maxw=273&maxh=205'
}
]
[
{
link: 'https://www.olx.ba/artikal/40528561/my-space-stan-stari-grad-renoviran-namjesten-50m2/',
descr: 'MY SPACE/ Stan/ Stari Grad/ RENOVIRAN/ NAMJESTEN/ 50m2',
price: '195000',
picture: 'https://s9.pik.ba/galerija/2020-11/14/12/slika-1070163-5fafc62c13a67-thumb.jpg'
}
]
[
{
link: 'https://www.olx.ba/artikal/39513168/cetverosoban-stan-u-novogradnji-malta-complex/',
descr: 'Četverosoban stan u novogradnji "Malta Complex"',
price: '166354',
picture: 'https://s9.pik.ba/galerija/2020-08/25/12/slika-2044886-5f44e95ad18a8-thumb.jpg'
}
]
[
{
link: 'https://www.olx.ba/artikal/41817042/my-space-stan-cengic-vila-gradacacka-48-m2/',
descr: 'MY SPACE/ Stan/ Cengic Vila/ Gradacacka/ 48 m2',
price: '120000',
picture: 'https://s9.pik.ba/galerija/2021-02/15/02/slika-1070163-602a78b066043-thumb.jpg'
}
]
[
{
link: 'https://www.olx.ba/artikal/41816059/adaptiran-trosoban-stan-2-sprat-dolac-malta-socijalno/',
descr: 'Adaptiran trosoban stan / 2. sprat / Dolac Malta / Socijalno',
price: '139000',
picture: 'https://s9.pik.ba/galerija/2021-02/15/01/slika-1424529-602a69c8c218f-thumb.jpg'
}
]
[
{
link: 'https://www.olx.ba/artikal/41042243/renovirana-garsonjera-na-skenderiji-prodaja/',
descr: 'Renovirana garsonjera na Skenderiji, prodaja!',
price: '110000',
picture: 'https://s9.pik.ba/galerija/2020-12/22/09/slika-115390-5fe1aee8796d0-thumb.jpg'
}
]
[
{
link: 'https://www.olx.ba/artikal/34234631/cetverosoban-stan-3b-novogradnja-vrtovi-riverine-ilidza/',
descr: 'Četverosoban stan-3B-NOVOGRADNJA/VRTOVI RIVERINE/ILIDŽA',
price: '156692',
picture: 'https://s9.pik.ba/galerija/2021-01/27/01/slika-1269653-6011595b4e941-thumb.jpg'
}
]
[
{
link: 'https://www.olx.ba/artikal/41776858/my-space-stan-dolac-malta-paromlinska-55-m2/',
descr: 'MY SPACE/ Stan/ Dolac malta/ Paromlinska/ 55 m2',
price: '139000',
picture: 'https://s9.pik.ba/galerija/2021-02/12/03/slika-1070163-602697ad1561f-thumb.jpg'
}
]
[
{
link: 'https://www.olx.ba/artikal/40854733/prostor-prodaje-dvosoban-stan-alipasino-polje/',
descr: 'PROSTOR prodaje: Dvosoban stan, Alipašino Polje',
price: '104500',
picture: 'https://s9.pik.ba/galerija/2020-12/08/05/slika-48261-5fcfaf984084d-thumb.jpg'
}
]
[
{
link: 'https://www.olx.ba/artikal/39192105/stan-102-m2-dva-balkona-sa-kuhinjom-stup/',
descr: 'Stan 102 m2 Dva balkona, sa kuhinjom Stup',
price: '230000',
picture: 'https://s5.pik.ba/galerija/2019-06/11/11/slika-925242-5cff6dd8594b0-thumb.jpg'
}
]
[
{
link: 'https://www.olx.ba/artikal/41136078/prostor-prodaje-dvosoban-stan-blizu-bascarsije/',
descr: 'PROSTOR prodaje: Dvosoban stan blizu Baščaršije',
price: '153000',
picture: 'https://s9.pik.ba/galerija/2020-12/29/03/slika-48261-5feb3ec26181a-thumb.jpg'
}
]
[
{
link: 'https://www.olx.ba/artikal/40102853/my-space-lux-stan-hrasno-bosmal-155-m2/',
descr: 'MY SPACE/ LUX Stan/ Hrasno/ Bosmal/ 155 m2',
price: '619000',
picture: 'https://s9.pik.ba/galerija/2020-10/12/03/slika-1070163-5f8460248bc5a-thumb.jpg'
}
]
[
{
link: 'https://www.olx.ba/artikal/41712867/my-space-stan-centar-mejtas-buka-95-m2/',
descr: 'MY SPACE/ Stan/ Centar/ MEJTAS/ Buka/ 95 m2',
price: '300000',
picture: 'https://s9.pik.ba/galerija/2021-02/08/01/slika-1070163-60213553ae220-thumb.jpg'
}
]
[
{
link: 'https://www.olx.ba/artikal/32083654/prodaja-stanova-novogradnja-vrtovi-riverine-ilidza/',
descr: 'PRODAJA STANOVA-NOVOGRADNJA/VRTOVI RIVERINE/ILIDŽA',
price: '75284',
picture: 'https://s9.pik.ba/galerija/2020-08/26/11/slika-1269653-5f4627de84c78-thumb.jpg'
}
]
[
{
link: 'https://www.olx.ba/artikal/34059753/cetverosoban-stan-3a-novogradnja-vrtovi-riverine-ilidza/',
descr: 'Četverosoban stan-3A-NOVOGRADNJA/VRTOVI RIVERINE/ILIDŽA',
price: '162776',
picture: 'https://s9.pik.ba/galerija/2020-08/26/11/slika-1269653-5f4626b70c55d-thumb.jpg'
}
]
[
{
link: 'https://www.olx.ba/artikal/40667077/stan-sarajevo-stari-grad-bistrik-detaljni-opis/',
descr: 'Stan Sarajevo - Stari Grad - Bistrik Detaljni opis',
price: '207000',
picture: 'https://s5.pik.ba/galerija/2019-08/13/07/slika-295630-5d52fa9a44bda-thumb.jpg'
}
]
[
{
link: 'https://www.olx.ba/artikal/41815741/my-space-stan-ilidza-grand-centar-54m2/',
descr: 'MY SPACE/ Stan/ Ilidza/ Grand centar/ 54m2',
price: '135000',
picture: 'https://s9.pik.ba/galerija/2021-02/15/01/slika-1070163-602a65e1dde3a-thumb.jpg'
}
]
[
{
link: 'https://www.olx.ba/artikal/40980442/prodaje-se-dvosoban-stan-kosevo/',
descr: 'PRODAJE SE dvosoban stan- Koševo',
price: '230000',
picture: 'https://s9.pik.ba/galerija/2020-12/17/03/slika-154243-5fdb6eaea9094-thumb.jpg'
}
]
[
{
link: 'https://www.olx.ba/artikal/34878314/prodaje-se-stan-na-stupu-ul-pijacna/',
descr: 'PRODAJE SE stan na Stupu -ul. Pijačna',
price: '92000',
picture: 'https://s5.pik.ba/galerija/2019-08/19/04/slika-154243-5d5ab3f0bf95e-thumb.jpg'
}
]
[
{
link: 'https://www.olx.ba/artikal/41676279/on-time-prodaje-marijin-dvor-stan-86-m2/',
descr: 'ON TIME prodaje: Marijin Dvor, Stan, 86 m2',
price: '387000',
picture: 'https://s9.pik.ba/galerija/2021-02/05/09/slika-2438228-601daa8830fb3-thumb.jpg'
}
]
[
{
link: 'https://www.olx.ba/artikal/40870310/prostor-prodaje-garsonjera-30m2-tibra-nedzarici/',
descr: 'PROSTOR prodaje: Garsonjera 30m2, Tibra Nedžarići',
price: '64500',
picture: 'https://s9.pik.ba/galerija/2020-12/09/06/slika-48261-5fd10627a5706-thumb.jpg'
}
]
[
{
link: 'https://www.olx.ba/artikal/41516526/prostor-prodaje-dvoetazni-stan-aerodromsko-naselje/',
descr: 'PROSTOR prodaje: Dvoetažni stan, Aerodromsko naselje',
price: '195000',
picture: 'https://s9.pik.ba/galerija/2021-01/26/05/slika-48261-601044ea62fb1-thumb.jpg'
}
]
[
{
link: 'https://www.olx.ba/artikal/38022587/dvosoban-stan-stup-tibra-49-m2/',
descr: 'Dvosoban stan Stup Tibra 49 m2',
price: '97000',
picture: 'https://s5.pik.ba/galerija/2020-05/06/02/slika-1718896-5eb2b0e7d94e4-thumb.jpg'
}
]
[
{
link: 'https://www.olx.ba/artikal/41733041/trosoban-stan-nova-otoka-novogradnja-60m/',
descr: 'Trosoban stan Nova Otoka/Novogradnja/60m²',
price: '175000',
picture: 'https://s9.pik.ba/galerija/2021-02/09/06/slika-1718896-6022bfc8254f1-thumb.jpg'
}
]
[
{
link: 'https://www.olx.ba/artikal/41714425/dvosoban-namjesten-stan-otoka-miljacka-novogradnja/',
descr: 'Dvosoban namjesten stan Otoka/Miljacka/ Novogradnja',
price: '142000',
picture: 'https://s5.pik.ba/galerija/2020-05/09/04/slika-1718896-5eb6bcb7f0397-thumb.jpg'
}
]
[
{
link: 'https://www.olx.ba/artikal/41732985/trosoban-stan-nova-otoka-novogradnja-74m/',
descr: 'Trosoban stan Nova Otoka/Novogradnja/ 74m²',
price: '218000',
picture: 'https://s9.pik.ba/galerija/2021-02/09/06/slika-1718896-6022c1db4b5f9-thumb.jpg'
}
]
[
{
link: 'https://www.olx.ba/artikal/41440791/prostor-prodajetrosoban-stan-sa-balkonom-i-lodjom-stup/',
descr: 'PROSTOR prodaje:Trosoban stan sa balkonom i lođom, Stup',
price: '126500',
picture: 'https://s9.pik.ba/galerija/2021-01/21/04/slika-48261-6009983ee116c-thumb.jpg'
}
]
[
{
link: 'https://www.olx.ba/artikal/40039060/novogradnja-buca-potok-dvosoban-stan-47-60m2popust-3/',
descr: 'NOVOGRADNJA BUĆA POTOK! Dvosoban stan 47,60m2!Popust 3%',
price: '119000',
picture: 'https://s9.pik.ba/galerija/2020-10/22/05/slika-48261-5f91a08c623ce-thumb.jpg'
}
]
[
{
link: 'https://www.olx.ba/artikal/41449900/novogradnja-stup-funkcionalan-trosoban-stan-48m2/',
descr: 'NOVOGRADNJA Stup: Funkcionalan trosoban stan, 48m2',
price: '103849',
picture: 'https://s9.pik.ba/galerija/2021-01/22/10/slika-48261-600a9b8c3b3f1-thumb.jpg'
}
]
[
{
link: 'https://www.olx.ba/artikal/39714781/novogradnja-buca-potok-dvosoban-stan-62-35-m2/',
descr: 'NOVOGRADNJA BUĆA POTOK! Dvosoban stan 62,35 m2!',
price: '149546',
picture: 'https://s9.pik.ba/galerija/2020-10/22/05/slika-48261-5f91ab463dc5e-thumb.jpg'
}
]
[
{
link: 'https://www.olx.ba/artikal/40743429/novogradnja-stup-komforan-dvosoban-stan-56m2-sarajevo/',
descr: 'NOVOGRADNJA Stup: Komforan dvosoban stan 56m2, Sarajevo',
price: '124051',
picture: 'https://s9.pik.ba/galerija/2020-11/30/05/slika-48261-5fc51924c75f9-thumb.jpg'
}
]

现在这不是我期望的输出。我期望的是一个对象数组,而不是一个对象数组,数组一个接一个地重写自己。

我如何使它只是一个数组与对象在它里面?为什么会发生这种情况?谢谢!

编辑以下是我在一个答案的帮助下所做的:parseData组件

const apartments = [];
exports.parseData = (getLink, getDescription, getPrice, getPicture) => {
let apartment = {
link: getLink,
descr: getDescription,
price: getPrice,
picture: getPicture,
};
apartments.push(apartment);
console.log(apartments.length);
};

现在长度输出是这样的:1 2 3 4 5 etc. LastOne,我期望长度是数组长度的最后一个数字。它会重写数组直到最后一个对象被压入数组

这里的问题是当你调用这个方法'parseData()当时的新公寓";数组被创建,你把数组压入所以每次当你调用函数的时候新的数组被创建所以你没有得到对象数组。

解决方案:如果你想要一个对象数组你必须在">中声明你的数组parseData()"。

你也可以这样做。

apartments.push ({链接:getLink,备注说明:getDescription,价格:getPrice,图片:getPicture,});

最新更新