Edited at

フィーチャーフォン(ガラケー)向けWebサイトのスクレイピング

にわかには信じがたいが、FPサイトを運用するシーンは少なからず存在する。

運用担当としては

効率的に表示確認ができるようにスクレイピングツールで一括スクレイピングして

「とりあえずページがぶっ壊れてない」ということを担保したい。


課題


XML文法エラー

素直にpuppeteerでスクレイピングすると

XMLの文法エラーによって正しく表示できないFPサイトがいくつかある。

著名なエミュレータ(FireMobileSimulator)では

Content-TypeをHTMLに強制変換してXMLの文法エラーを回避しており、

puppeteerでスクレイピングするには同じことをやってあげる必要がある。


UIDの設定

FPサイトは基本的にUIDを使ったログイン処理を行なっているので

UIDを偽装して会員専用ページなどをスクレイピングしたいシーンがある。

UIDはRequestHeaderにいくつかのプロパティを追加する必要がある。


fp-scraper

上記の課題をもろもろ解消したNodeモジュール。

数行のコードを記述するだけで任意のWebページを一括でスクレイピングできる。


インストール

mkdir scraping

cd scraping

npm init -y
npm i -S fp-scraper
vi app.js


プログラム作成


app.js

const FpScraper = require('fp-scraper');

(async() => {
const scraper = new FpScraper({
// スクレイピングしたいURLを配列で渡す
urls: ['http://k.nhk.jp/'],
// UIDの設定
uid: 'MY_CUSTOM_UID'
});

await scraper.scrape();
})();



実行

// resultディレクトリにキャプチャが格納される

node app.js


余談

fp-scraperと組み合わせてpixelmatchで差分比較すると

より効果的なスクレイピングツールによる表示確認が実現できる。


URL