• 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

VPS Starter Arubacloud
0 głosów
218 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,218 wizyt
pytanie zadane 21 sierpnia 2020 w JavaScript przez Brzeczy Początkujący (310 p.)
0 głosów
2 odpowiedzi 591 wizyt
0 głosów
1 odpowiedź 416 wizyt

93,020 zapytań

141,985 odpowiedzi

321,284 komentarzy

62,366 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

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...