【问题标题】:Scroll down the page to get all the elements in JS puppeter向下滚动页面以获取 JS puppeteer 中的所有元素
【发布时间】:2020-09-17 19:47:21
【问题描述】:

我正在使用代码来获取元素,它可以完美运行并满足我的需求。但是,我意识到他没有拾取所有元素,因为他没有在屏幕上加载它们,并且要加载我需要向下滚动。

我搜索但找不到向下滚动以加载其他元素的方法,有人可以帮助我吗?

const puppeteer = require('puppeteer');
const acesso = require('./acesso');

(async () => {
  const browser = await puppeteer.launch({
    headless: false
  });
  const page = await browser.newPage()
  await page.goto('https://www.instagram.com/')
  await page.waitFor('input[name="username"]')
  await page.type('input[name="username"]', acesso.dados.usuario, { delay: 100 })
  await page.type('input[name="password"]', acesso.dados.senha, { delay: 100 })
  await page.keyboard.press('Enter')
  await page.waitForNavigation()
  await page.click('#react-root > section > main > div > div > div > div > button')
  await page.waitFor(10000)
  await page.click('.aOOlW.HoLwm')
  await page.goto('https://www.instagram.com/teamcarrascoo/')
  await page.waitFor(10000)
  await page.click('.RR-M-.h5uC0')
  await page.waitFor(1000)
  await page.click('.Igw0E.rBNOH.eGOV_._4EzTm')
  page.waitFor(2000)
  const hrefs = await page.$$eval('.xLCgt a', links => links.map(link => link.href));
  hrefs.forEach((link, index) =>{
    setTimeout(()=>{
    page.goto(link)
  },index * 10000)
  })
})();

//The problem is in const hrefs = await page.$$eval('.xLCgt a', links => links.map(link => link.href)); I need to get all the elements, but only what was loaded on the screen comes, so I need to scroll it.

【问题讨论】:

  • 我还是有问题。那么下面...使用下面的命令: window.scrollBy (0, window.innerHeight) 它完全滚动页面,但是,我想要故事栏,而不是页面。但是,如果我关闭故事并使用它可以工作的命令,那么当我打开故事查看器时,我的滚动条(向上和向下)不适用于该命令。你能帮我解决这个问题吗?

标签: javascript node.js puppeteer


【解决方案1】:

这是一个两部分的问题。

  1. 如何向下滚动?

使用window.scrollBy(0,window.innerHeight) - 这会触发在 Instagram 上加载下一页(已验证)

  1. 你怎么知道你已经走到了尽头?

继续记录最后一个已知的scrollY,如果它没有改变,你已经到了终点。

【讨论】:

  • 我还是有问题。那么下面...使用下面的命令: window.scrollBy (0, window.innerHeight) 它完全滚动页面,但是,我想要故事栏,而不是页面。但是,如果我关闭故事并使用它可以工作的命令,那么当我打开故事查看器时,我的滚动条(向上和向下)不适用于该命令。你能帮我解决这个问题吗?
  • 你想在故事栏上水平滚动?
  • 不,自上而下的故事
  • 我仍然不清楚您需要什么,我可以建议您对您期望的行为进行快速屏幕录制吗?此外,如果关闭故事栏并应用 scrollBy 满足您的需求,也许使用 display:none 隐藏它? - 我注意到的另一件事是您使用的样式类可能无法通过不同的构建保持有效,例如:这些是动态类 - .xLCgt a 等。
猜你喜欢
  • 1970-01-01
  • 2021-04-18
  • 2012-04-07
  • 2020-11-13
  • 1970-01-01
  • 2011-05-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多