web-dev-qa-db-ja.com

Puppeteer-クラス名で要素を数える

特定のクラス名を持つすべての要素に関する情報を配列に取得しようとしています。

問題は、これが動的に生成されたHTMLページであり、下にスクロールしている限り、そのクラス名の新しい要素が表示されることです。

幸いなことに、私はこれらの要素がいくつ存在するかを事前に知っています。

したがって、私の仮想的な解決策は、その特定のクラス名を持つ要素の数を確認することです。その数が私が知っている数よりも少ない限り、下にスクロールし続けます。

問題は、puppeteer内の特定のクラス名の要素を正確にカウントする方法がわからず、APIもあまり役に立たなかったことです。

5
user1584421

これがあなたが探しているものだと思います

const puppeteer = require('puppeteer')

async function count () {
  const browser = await puppeteer.launch()
  const page = await browser.newPage()
  await page.goto('https://news.ycombinator.com', {waitUntil: 'networkidle2'})
  await page.evaluate(_ => {
    window.scrollBy(0, window.innerHeight)
  })

  console.log('how many?', (await page.$$('td.title')).length)

  await browser.close()
}

count()
10