開発環境
- node.js 7.3.0
- cheerio-httpcli 0.6.11
- iconv-lite 0.4.17
chererio-httpcliを使うと簡単にスクレイピング出来てしかもjQueryの書き方が出来るので楽なのですが、読み込んだファイルの中身を問答無用にUTF-8に変換してしまいます。(本来はありがたい機能です)
しかし、htmlをダウンロードする場合、そのhtmlのcharsetがUTF-8以外の場合、ダウンロードしたファイルをブラウザで確認すれば文字化けしてしまいます。よってファイル書き込み時は工夫が必要です。
var client = require('cheerio-httpcli');
var fs = require('fs');
var iconv = require('iconv-lite');
var savepath = ""; //適当なパス
var url = ""; //utf-8以外を指定しているhtml
client.fetch(url, {}, function(err, $, res){
//略
fs.writeFileSync(savepath, iconv.encode($.html(), 'shift_jis'));
}
以上で可能でした。試してませんが、shift_jis以外でもいける・・・かも