Cześć, piszę puppetera w Node JS, w bibliotece puppeteer, dedykowanej do skrobania*.
Natrafiłem na problem przy próbie skrobania OLXa:
await page.goto('https://www.olx.pl/d/motoryzacja/samochody/');
const result = await page.evaluate(() => {
let data = [];
let elements = document.querySelectorAll('a');
for (var element of elements){
let xxx = element.innerText;
data.push({xxx});
}
return data;
});
Jak widać, ściągam dane w nazwijmy to: kontenerach, na podstawie znacznika - a. Efekt:
{
xxx: 'Mercedes-Benz Klasa V Auto w super stanie serwisowane regularnie ,polecam\n' +
'\n' +
'209 000 zł\n' +
'do negocjacji\n' +
'\n' +
'Warszawa, Praga-Południe - Dzisiaj o 19:06\n' +
'\n' +
'2016 - 121 000 km\n' +
'Obserwuj'
},
...
Potrzebuję pozyskać wybrane elementy z tego, np: cena, rocznik z przebiegiem i tytuł. Nie mogę wejść głębiej w htmla (w elementy w a), ponieważ musiałbym korzystać z selektorów css, a one się zmieniają po załadowaniu strony.
Można NA PEWNO to zrobić za pomocą childNodes i tu jest problem, bo jakiej kombinacji nie próbowałem:
hasChildNodes, childNodes[...], children[...], firstChild, lasttChild
no nie potrafię tego wyciągnąć, podejrzewam, że to głupi błąd w implementacji.
Pomoże Ktoś? Czy są inne pomysły?
(nie chcę pobierać jsona, tylko wyświetlać to na konsoli*)