レガシーWebアプリのスクレイピング
社内システムのあるWebアプリケーションの機能をAndroidから利用したいんだが、設計が2000年前後のいわゆる「レガシーWeb」である。
本来ならば、RESTなりなんなりでサービスを提供してくれとなるはずなのだが、コストの面でそうも行かない場合も多々ある訳で、やはりスクレイピングは必要悪として必要な訳だ。
Androidの場合、Webkitと配下に用意されたWebブラウザのビューとして使用するWebViewクラスを使うことでjavsscriptを介してJavaのオブジェクト#メソッドを叩くことが可能であり、この機能を使えば大抵のことはできるだろうとは分かっていたが、モバイルアプリケーションで個々にWebViewクラスを抱えるのもどうかと思ったので、WebViewはシステムに一つだけ用意して、それを全てのアプリケーションから利用できればいいんじゃないか、そうだ、Androidにはサービスもあるし、Webスクレイピング・サービスを介すことで無駄を省けるな、などとぼんやり調べていたのだが、はてなのグループで既にまとまっている記事を見つけたので、これを参考にさせて頂くことにした。
WebViewを使ったスクレイピング / scraping a page using the WebView in a Service
サービスとして書いているのもそのものずばりだ。
これ以外にやるとすると、オーソドクスにHTMLCleaner等のプリパーサでHTMLを綺麗にしておいて、その後AndroidのXMLパーサで読み込む方法もあるが、問題はメモリ消費量だろうな。