LoginSignup
6
12

More than 5 years have passed since last update.

Puppeteerスクレイピング〜任意のページから電話番号を取得する〜

Last updated at Posted at 2019-02-25

はじめに

  • 今回、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や、正規表現を調整すれば、住所やメールアドレスなど、必要なものをスクレイピングできるツールにカスタマイズできます。

今回のコードの注意点

  • 今回のコードでは、インラインフレーム内の文字列は、取得できません。
  • 電話番号はゆるゆるな正規表現を使っております。これでは、「-」なしの電話番号はヒットしません。正規表現についてはこちら

以上です。最後まで、ありがとうございました。

6
12
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
6
12