Puppeteer 템플릿

nodejs로 스크래핑하기 위해 cheerio-httpcli을 사용했지만 연주되는 사이트가 나왔기 때문에,
헤드리스 크롬으로 스크래핑 할 수있는 Puppeteer

먼저 소감을 쓰면 완벽하게 스크래핑할 수 있었다.
PWA 페이지에서도 그려질 때까지 기다려주고, 잡을 수 없는 값은 없을 것 같다.
앞으로는 이 Puppeteer를 메인으로 스크레이핑하므로, 템플리로서 코드를 남긴다.

템플릿 코드



qiita의 Organization 일람으로부터 자사인 「주식회사 유메미」의 투고수/좋아하는 수를 취득해 본다.

다음에 코드로 스쿠쇼도 찍어 본다.
const puppeteer = require('puppeteer')

try {
  (async () => {
    const browser = await puppeteer.launch()
    const page = await browser.newPage()
    await page.goto("https://qiita.com/organizations/yumemi", { waitUntil: 'networkidle2' })  //表示されるまで待つ
    await page.screenshot({path: 'qiita_screenshot.png'}) //スクリーンショット撮影

    //投稿数
    const itemSelector1 = "body > div:nth-child(4) > div.organizationHeader > div > div > div > div.col-sm-3 > div > div:nth-child(1) > div.organizationHeader_stats_value"
    var postsCount = await page.$eval(itemSelector1, item => item.textContent) //取得
    console.log(`投稿数:${postsCount}`)

    //いいね数
    const itemSelector2 = "body > div:nth-child(4) > div.organizationHeader > div > div > div > div.col-sm-3 > div > div:nth-child(2) > div.organizationHeader_stats_value"
    var thunbsUpCount = await page.$eval(itemSelector2, item => item.textContent) //取得
    console.log(`いいね:${thunbsUpCount}`)

    await browser.close() //後片付け
  })()
} catch (error) {
  console.error(error)
}

촬영한 스쿠쇼


await page.screenshot({path: 'qiita_screenshot.png'}) 로 촬영한 이미지



제대로 찍을 수 있다!

결과


投稿数: 1166
いいね: 31231

확실히 얻을 수 있었다!

자료 링크


  • 공식 문서
  • Puppeteer htps : // ptr. 에서 v/

  • github
  • GoogleChrome/puppeteer: htps : // 기주 b. 코 m / 오오 g ぇ Ch 로메 / 뿌페 테에 r

  • examples
  • checkly/puppeteer-examples: htps : // 푸페테에 r씨 d보 x. 이 m

  • 좋은 웹페이지 즐겨찾기