проблема кукловода: querySelectorAll () возвращает только один элемент - PullRequest
0 голосов
/ 06 января 2019

Я хочу извлечь вопросы и ответы о продуктах от Amazon. Но я получаю только 1 элемент в массиве из кода, который я пробовал.

Я попытался запустить querySelectorAll () в реальном браузере, но он правильно возвращает 9 элементов.

const browser = await puppeteer.launch({ headless: false });    
const page = await browser.newPage();    
const pageURL = "https://www.amazon.in/Espoir-Analog-Blue-Dial-Watch-ESP12457/dp/B07417987C/ref=sr_1_1?s=watches&rps=1&ie=UTF8&qid=1546787547&sr=1-1&refinements=p_98%3A10440597031%2Cp_n_material_browse%3A1480914031|1480915031";
await page.goto(pageURL, { waitUntil: "networkidle2" });    
const QAs = await page.evaluate(() => {    
    let elements = Array.from(document.querySelectorAll("div.a-fixed-left-grid-col .a-col-right"));    
    let links = elements.map(element => {    
        return element.innerText    
    })    
    return elements;    
  });    
console.log("q=", QAs);

1 Ответ

0 голосов
/ 06 января 2019

вам нужно прокрутить до контейнера элемента и дождаться завершения Ajax-запроса и обработать QAs

await page.evaluate(() => {
  document.querySelector('#ask_lazy_load_div').scrollIntoView();
});
await page.waitForSelector(".askTopQandA", {timeout: 10000}); // 10 seconds
const QAs = await page.evaluate(() => {....
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...