【问题标题】:puppeteer problem: querySelectorAll() returning only one elementpuppeteer 问题:querySelectorAll() 只返回一个元素
【发布时间】:2019-01-06 15:55:56
【问题描述】:

我想从亚马逊提取有关产品的问题和答案。但是我从我尝试过的代码中只得到了数组中的 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);

【问题讨论】:

    标签: node.js puppeteer


    【解决方案1】:

    您需要滚动到元素容器并等待 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(() => {....
    

    【讨论】:

      猜你喜欢
      • 2018-03-04
      • 2021-11-05
      • 1970-01-01
      • 2020-07-09
      • 2021-08-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多