• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed Zapis wyniku z konsoli w pliku json

Object Storage Arubacloud
0 głosów
190 wizyt
pytanie zadane 20 grudnia 2022 w JavaScript przez Czang Kai Shrek Obywatel (1,990 p.)
zamknięte 23 grudnia 2022 przez Czang Kai Shrek

Cześć, piszę w NodeJS, biblioteka puppeteer. W programie niżej, pobieram dane ogłoszeń ze wszystkich stron danej kategorii, tzw. puppeteer:
 

//pobiera ze wszystkich stron po znacznikach html
const puppeteer = require('puppeteer');

let scrape = async () => {
    const browser = await puppeteer.launch({ headless: true });
    const page = await browser.newPage();

    await page.goto('https://www.olx.pl/d/motoryzacja/samochody/');

    var results = [];
    var lastPageNumber = 25;    //ilosc stron
    for (let index = 0; index < lastPageNumber; index++) {  //iteracja po podstronach
        await page.waitFor(1000);
        results = results.concat(await extractedEvaluateCall(page));
        if (index != lastPageNumber - 1) {
            //await page.waitFor(2000); //error: page.waitFor is not a function? wersja puppeteer nie wspiera?
            await page.click('#root > div.css-50cyfj > div.css-88vtd4 > form > div:nth-child(5) > div > section.css-j8u5qq > div > ul > li:nth-child(2)');
        }
    }

    browser.close();
    return results;
};

async function extractedEvaluateCall(page) {
    return page.evaluate(() => {
        let data = [];
        let elements = document.querySelectorAll('a');

        for (var element of elements) {
            let offer = element.innerText;
            data.push({offer});
        }

        return data;
    });
}

scrape().then((value) => {
    console.log(value);
    console.log('Collection length: ' + value.length);
    console.log(value[0]);
    console.log(value[value.length - 1]);
});

Wynik:
 },
  {
    offer: 'Wolkswagen passat fl 1.9tdi 130km\n' +
      '\n' +
      '3 700 zł\n' +
      '\n' +
      'Giżycko - Dzisiaj o 17:10\n' +
      '\n' +
      '2002 - 532 321 km\n' +
      'Obserwuj'
  },
  {
    offer: 'Renault Scenic Automat, piękny stan, klimatronik, oryginał, bezwypadkowy, opłacony\n' +
      '\n' +
      '11 999 zł\n' +
      '\n' +
      'Ryki - Dzisiaj o 17:10\n' +
      '\n' +
      '2006 - 175 000 km\n' +
      'Obserwuj'
  },
 ... 5100 more items


Pytanie: Jak wyeksportować dane z konsoli do pliku? np. json. Pierwsze co przychodzi na myśl to JSON.parse(), ale albo nic się nie pojawia albo część danych. Macie jakiś pomysł lub inny sposób?

komentarz zamknięcia: Znam odpowiedź

1 odpowiedź

+2 głosów
odpowiedź 21 grudnia 2022 przez sefir Dyskutant (8,560 p.)
wybrane 23 grudnia 2022 przez Czang Kai Shrek
 
Najlepsza

A nie wystarczy zrobić tak?

fs.writeFileSync("plik.json", JSON.stringify(value, null, 2));

 

komentarz 23 grudnia 2022 przez Czang Kai Shrek Obywatel (1,990 p.)

Dzięki, poradziłem sobie wcześniej, ale to jest właściwy trop.
 

let json = JSON.stringify(results);

let fs = require('fs');
fs.writeFile('filename.json', json, 'utf8', function(err) {
    if (err) throw err;
    console.log('complete');
});

 

Podobne pytania

+1 głos
1 odpowiedź 1,083 wizyt
pytanie zadane 21 sierpnia 2020 w JavaScript przez Brzeczy Początkujący (310 p.)
0 głosów
2 odpowiedzi 498 wizyt
0 głosów
1 odpowiedź 374 wizyt

92,576 zapytań

141,425 odpowiedzi

319,650 komentarzy

61,961 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...