備忘録としてNode.jsでWebスクレイピングをする際に個人的によく使うメソッドをまとめておく。
前処理編
filter
配列にフィルターを施す。
任意の条件に対して返り値がtrue
であった値のみ出力される。
外部ファイルからデータを読み込むようにしていたため、不正なURLやパラメータが記載されていた場合は排除するようにしていた。
var urlList= ["https://example.co.jp/item", "https://example.co.jp/list", "https://exmple.co.jp/user"];
var filteredUrlList = urlList.filter(url => url.includes("https://example.co.jp"));
console.log(filteredUrlList ) // Array ["https://example.co.jp/item", "https://example.co.jp/list"]
splice
配列から指定した値を削除したり追加したりする。
filterと似たような使い方をしていたため、どちらかというと配列内のデータを削除したいときに使う。
toLowerCase & toUpperCase
対象の文字を大文字もしくは小文字に変換する。
外部ファイルから読み込んだデータをURLのパラメーターとして使う際によく置換していた。
データ加工編
replace
対象の文字を指定した文字に変更できる。
正規表現と組み合わせて余分な空白を削除したり日付を任意のフォーマットに変更するときによく使う。
var date = "2018/02/21";
var modifiedDate = date.replace(/\/,-g/, "-");
console.log(modifiedDate) // "2018-02-21"
substring & substr
対象の文字列から指定したインデックスの文字を取得する。
substring
は 第二引数は終了地点であるのに対し、substr
は取得文字数を意味している。
**
var date = "2018/02/21 12:32";
var modifiedDate = date.substring(0, 10);
console.log(modifiedDate) // "2018/02/21"
【追記】
確認すると、どうやらsubstr
は非推奨とまではいかないものの、できるだけ使用は避けるべきと公式に記載がされている。
出力編
push & contat
指定したデータを配列の一番後ろに追加することができる。
push
を使うとpushされる前のデータはなくなる(破壊的結合)が、contat
を使うとその前のデータは保持される(非破壊的結合)という違いがある。
Webスクレイピングで取得したデータを出力対象に追加する際に使う。
var items = ["a", "b", "c", "d"]; // So Many Data
var newItem= "e";
items.push(newItem);
console.log(items); // Array ["a", "b", "c", "d", "e"]
slice
配列もしくは文字列から指定した範囲を抜き取る。
splice
とは異なり、以前のデータは破壊されない。
取得したデータを分割して出力する際に使う
var items = ["a", "b", "c", "d", "more"]; // So Many Data
for (i=0, i*50 >item.length, i++) {
var list= date.slice(i*50, (i+1)*50);
console.log(list) // "50件ずつ出力"
};