1
/
5

入社3日目でpuppeteerさわってみた。

こんにちは。

エンジニア見習の松本です。

今回は以前の記事にあったpuppeteerとdom操作について書いていきます。

puppeteerとは…

puppeteerとは、プログラムでchromeを開き特定のWebページの読み込みスクリーンショット指定された場所をクリックし値を入力し結果を取得する、といった操作を自動的に行わせることができるようになるものです。

例えば、Googleの検索エンジンにアクセスし、検索ワードを入力して、検索結果のページから情報を抽出すること等ができます。

今回は、

1.Googleにアクセス

2.検索フォームに文字列の入力

3.検索ボタンを押し、画面を遷移させる

上記の工程を実際にやっていきます。


実践

まずpuppeteerの起動から終了までのコードを打ちます。

const puppeteer = require('puppeteer');

(async () => {
  // Chromeのヘッドレスモード ※true:表示なし、false:表示有

  const headlessMode = true;// debugする際にfalseにする

  const browser = await puppeteer.launch({headless: headlessMode});//Headlessで起動

  const page = await browser.newPage(); // このpageに


  /////////////////////
  //※実際の処理の部分//
  ////////////////////


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


次に処理の部分に入っていきます。

   ////////////////////
  //※実際の処理の部分//
  ////////////////////

  await access(page); //Googleのホーム画面を表示・・・⑴

  await input(page);  //検索フォームへの入力・・・⑵

  await result(page); //検索結果の画面表示・・・⑶


それぞれの処理の内容に入っていきます。

Googleのホーム画面を表示・・・⑴

async function access(page) {
  const TARGET_URL = "https://www.google.co.jp/";//Googleの検索画面URL

  //指定URLへ移動
  await page.goto(TARGET_URL, {waitUbtil: 'networkidle'});
  //画面のスクリーンショット
  await page.screenshot({path: 'ScreenshotsFull.png', fullPage: true});
}



検索フォームへの入力・・・⑵

async function input(page){
  //検索ワード
  const input_word = "株式会社キーリンク";
  //検索ワードをセット
  await page.type("input.gsfi", input_word);
  //画面のスクリーンショット
  await page.screenshot({path: 'ScreenshotsFull2.png', fullPage: true});
}



検索結果の画面表示・・・⑶

async function result(page){
  //Googleの検索ボタンをCLick
  await page.click('input[value="Google 検索"]');
  //画面移動が終わるまで待つ
  await page.waitForNavigation({timeout: 60000, waitUntil: "domcontentloaded"});
  //画面のスクリーンショット
  await page.screenshot({path: 'ScreenshotsFull3.png', fullPage: true});

※フルスクリーンで撮りましたが、長かった為トリミングしました。

全体のコードはこんな感じです。

const puppeteer = require('puppeteer');

(async () => {
  // Chromeのヘッドレスモード ※true:表示なし、false:表示有
  const headlessMode = true;

  // debugする際にfalseにする
  const browser = await puppeteer.launch({headless: headlessMode}); //Headlessで起動
  const page = await browser.newPage(); //このpageに

//Googleの検索画面
  await access(page); //Googleの検索画面を表示

  await input(page);  //検索バーへの入力

  await result(page); //検索結果の画面表示

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

//Googleの検索画面を表示
async function access(page) {
  const TARGET_URL = "https://www.google.co.jp/";//Googleの検索画面URL

  //指定URLへ移動
  await page.goto(TARGET_URL, {waitUbtil: 'networkidle'});
  //画面のスクリーンショット
  await page.screenshot({path: 'ScreenshotsFull.png', fullPage: true});
}

//検索バーへの入力
async function input(page){
  //検索ワード
  const input_word = "株式会社キーリンク";
  //検索ワードをセット
  await page.type("input.gsfi", input_word);
  //画面のスクリーンショット
  await page.screenshot({path: 'ScreenshotsFull2.png', fullPage: true});
}

//検索結果の画面表示
async function result(page){
  //Googleの検索ボタンをCLick
  await page.click('input[value="Google 検索"]');
  //画面移動が終わるまで待つ
  await page.waitForNavigation({timeout: 60000, waitUntil: "domcontentloaded"});
  //画面のスクリーンショット
  await page.screenshot({path: 'ScreenshotsFull3.png', fullPage: true});
}


最後に

今回はpuppeteerについて学びました。まだまだ完璧に使いこなせるわけではないのでこれから少しづつ覚えていきたいと思います。

株式会社キーリンク's job postings

Weekly ranking

Show other rankings
Like 翔馬 松本's Story
Let 翔馬 松本's company know you're interested in their content