node.js+selenium環境でjqueryを使ってスクレイピングする方法


node.js+selenium環境でjqueryを使ってスクレイピングする方法

node.js+selenium環境でjqueryを使ってスクレイピングしたい!!そんなときはこんな風にするとうまくいきました。

  1. selenium側でjqueryを使ってスクレピング
  2. スクレイピングした結果のデータを配列にしてJSON形式にしてサーバに渡す。
  3. サーバ側でJSONパースしてオブジェクトにする。
  4. サーバー側で受け取ったJSONデータをdata.jsonというファイルに保存する
  var webdriver = require('selenium-webdriver');

  var driver = new webdriver.Builder()
    .forBrowser('chrome')
    .build();

  driver.get('http://hogehoge.com/');
  driver.executeScript("return JSON.stringify($('.entry-title').map(function(){return $(this).text().trim();}).get());").then(function (return_value) {
    let json = JSON.parse(return_value);
    for (var key in json) {
      let val = json[key];
      fs.writeFile(path.join(__dirname, "data.json"), JSON.stringify(json), function (err) {
        if (err) {
          return console.log(err);
        }
      });
    }

※URL「 http://hogehoge.com/ 」と、jQueryのセレクタ「 .entry-title 」部分をお好きに書き換えてください。

これでjQueryのセレクタにマッチしたデータをJSONファイルに保存することができます
seleniumのお作法を学ぶより使い慣れたjQueryを使いたい!!という人には有用な方法と思います。

エンジニアに役立つ情報をTwitterでも発信していますので宜しければTwitterの方もフォローをよろしくお願いします!
Twitterへのリンクはコチラ