В образовательных целях я пытаюсь получить отзывы об этой странице https://www.tripadvisor.es/Restaurant_Review-g294308-d4754017-Reviews-or10-TAC_ROLL-Quito_Pichincha_Province.html. У меня 10 отзывов на странице, и у меня есть этот набор селекторов HTML (мой код использовался для получения всех 10 комментариев с каждой страницы, ностраница была обновлена):
#review_593124597 > div:nth-child(1) > div:nth-child(2) > div:nth-child(5) > div:nth-child(1) > p:nth-child(1)
#review_583146930 > div:nth-child(1) > div:nth-child(2) > div:nth-child(4) > div:nth-child(1) > p:nth-child(1)
#review_577877496 > div:nth-child(1) > div:nth-child(2) > div:nth-child(4) > div:nth-child(1) > p:nth-child(1)
#review_572957932 > div:nth-child(1) > div:nth-child(2) > div:nth-child(4) > div:nth-child(1) > p:nth-child(1)
#review_571417105 > div:nth-child(1) > div:nth-child(2) > div:nth-child(5) > div:nth-child(1) > p:nth-child(1)
#review_565883882 > div:nth-child(1) > div:nth-child(2) > div:nth-child(5) > div:nth-child(1) > p:nth-child(1)
#review_564612180 > div:nth-child(1) > div:nth-child(2) > div:nth-child(4) > div:nth-child(1) > p:nth-child(1)
#review_554301618 > div:nth-child(1) > div:nth-child(2) > div:nth-child(4) > div:nth-child(1) > p:nth-child(1)
2 вещи, которые меняются, это идентификатор обзора и 4-й див (между nth-child 4 и 5, Я не знаю, влияют ли они также на результатвнутреннего текста ).Я пытаюсь получить внутренний текст этих элементов, но мне не повезло.Код, который я сейчас использую:
const comentarios = 'div[id^=review_] > div:nth-child(1) > div:nth-child(2) > div:nth-child(5) > div:nth-child(1) > p:nth-child(1)'
const comnetarioLength = 'partial_entry';
let listLength = await page.evaluate((sel) => {
window.scrollBy(0, window.innerHeight);
return document.getElementsByClassName(sel).length;
}, comnetarioLength);
console.log(listLength);
Ниже приведен мой старый код, который работал, но страница была обновлена, и я не знаю, что именно мне нужно делать, поскольку я получаю толькопервый внутренний текст каждой страницы :
for (let i = 1; i <= listLength; i++) {
let selectorComentarios = comentarios.replace("Index", i); //<--I know
//this is supposed to be different
let comentario = await page.evaluate((sel) => { // Let's create variables and store values...
try {
let comentarioText = document.querySelector(sel).innerText;
return comentarioText;
}
catch (e) { }
}, selectorComentarios);
console.log(comentario);
}