3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

クローラー/Webスクレイピング&RPA Advent Calendar 2018Advent Calendar 2018

Day 4

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

Last updated at Posted at 2018-10-29

にわかには信じがたいが、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

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?