node.js+selenium環境でjqueryを使ってスクレイピングする方法
node.js+selenium環境でjqueryを使ってスクレイピングしたい!!そんなときはこんな風にするとうまくいきました。
- selenium側でjqueryを使ってスクレピング
- スクレイピングした結果のデータを配列にしてJSON形式にしてサーバに渡す。
- サーバ側でJSONパースしてオブジェクトにする。
- サーバー側で受け取った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へのリンクはコチラ