LoginSignup
1
2

【Node.js】TypeScript+Puppeteerでスクレイピングしてみる

Posted at

はじめに

PythonのSeleniumでのスクレイピングはやったことありましたが、Node.jsでは経験がなかったので、Puppeteerで試してみました。

Puppeteerとは

Googleが開発したツールで、ウェブブラウザを制御し自動化するためのライブラリです。ウェブページの操作やスクレイピングなどのタスクを簡単に実行することができます。

試してみる

Qiitaのpuppeteerタグページのトレンド1位のタイトルを取得してみます

試した環境

node -v
v18.16.0

必要なモジュールをインストール

$ npm i puppeteer typescript ts-node

tsconfig.jsonファイルを生成

$ ./node_modules/.bin/tsc --init

package.jsonファイルに以下を追加

package.json
"scripts": {
  "dev": "ts-node main.ts"
}

main.tsファイルを作成

main.ts
import puppeteer from 'puppeteer'

(async () => {
  // ブラウザを起動
  const browser = await puppeteer.launch({ headless: 'new' })
  // 新しくページを開く
  const page = await browser.newPage()
  // 対象のページへ遷移
  await page.goto('https://qiita.com/tags/puppeteer')

  const result = await page.evaluate(() => {
    // ページの最初のh2タグのテキストを返す
    return document.querySelector('h2')?.textContent?.trim()
  })

  // ブラウザを閉じる
  await browser.close()

  console.log(result)
})()

実行してみる(2023/05/30時点)

$ npm run dev

> dev
> ts-node main.ts

Puppeteerのセットアップから使い方まで〜ブラウザ操作の自動化〜

トレンド1位のタイトルが取得できました🥳

まとめ

簡単にスクレイピングできました。特に要素を取得する際のコードがTypeScriptで書けるのが良いですね。この他にもフォームの入力やスクリーンショットの取得もできるので気になる方は調べて試してみてください。

最後に

GoQSystemでは一緒に働いてくれる仲間を募集中です!

ご興味がある方は以下リンクよりご確認ください。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2