はじめに
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では一緒に働いてくれる仲間を募集中です!
ご興味がある方は以下リンクよりご確認ください。