はじめに
- 今回、Node.jsのライブラリである、Puppeteerを使って、スクレイピングツールを作ったので、共有しておきます。
- Puppeteerのインストール方法については、情報がたくさんありますので、割愛します。
- ※本記事に出てくる会社概要や電話番号は、知り合いの会社のもので、許可を得て掲載してます。
今回のコード
example.js
const puppeteer = require('puppeteer'); // ①puppeteerの読み込み
let url = 'https://recore-pos.com/contact/'; //②ここにURLを入力する
(async () => {
// ③puppeteerからブラウザと新規タブを立ち上げる
const browser = await puppeteer.launch();
const page = await browser.newPage();
// ④pageを目的のURLへ移動
await page.goto(url);
// ⑤html全体を取得
let html = await page.$eval('html', item => {
return item.innerHTML;
});
// ⑥電話番号をゆるゆるな正規表現で抽出
let res = await html.match(/0\d{1,4}-\d{1,4}-\d{3,4}/);
// ⑦結果を出力
if(res !== null){
console.log('電話番号取得成功:' + res[0]);
}else{
console.log('電話番号を取得できませんでした。');
}
// ⑧puppeteerを終了
await browser.close();
})();
実行結果
電話番号取得成功:06-6767-8787
ざっくり解説
①ライブラリの読み込みに必要なおまじないです。
②ここに好きなURLを入れます。今回は、知り合いの会社のものを使わせて頂いてます。
③「browser」定数と「page」定数を、定義してます。他の言語で言うところの、「final」と同じ動きをします。
④「.goto()」で、引数のURLに移動します。
⑤第一引数の「'html'」はセレクタです。今回は、html全体を選択してます。
⑥ゆるゆるですが、一応電話番号を狙った正規表現です。ここを変えれば、好きなものをスクレイピングするツールにカスタムできます。※正規表現については、こちらでも触れています。
⑦結果を成功失敗で、分岐させてます。
⑧Puppeteerで開いたブラウザを閉じるおまじないです。
最後に
URLや、正規表現を調整すれば、住所やメールアドレスなど、必要なものをスクレイピングできるツールにカスタマイズできます。
今回のコードの注意点
- 今回のコードでは、インラインフレーム内の文字列は、取得できません。
- 電話番号はゆるゆるな正規表現を使っております。これでは、「-」なしの電話番号はヒットしません。正規表現についてはこちら。
以上です。最後まで、ありがとうございました。