10
Android内の ブラウザ(WebKit)使ったスクレイピング まいむぞう / 大路 裕介(おおみち ゆうすけ) 日本Androidの会北海道支部長 2010213日土曜日

Androidのブラウザでスクレイピング

Embed Size (px)

DESCRIPTION

Androidのブラウザを使ってスクレイピングすると楽。特にAjaxなサイトからもデータを拾える!

Citation preview

Page 1: Androidのブラウザでスクレイピング

Android内のブラウザ(WebKit)を使ったスクレイピング

まいむぞう / 大路 裕介(おおみち ゆうすけ)日本Androidの会北海道支部長

2010年2月13日土曜日

Page 2: Androidのブラウザでスクレイピング

最初に大事なこと現在無職です!

実はAndroidのブラウザを使うと、スクレイピングが楽かもしれない

Ajax前提のサイトからもスクレイピングできるかもしれない

2010年2月13日土曜日

Page 3: Androidのブラウザでスクレイピング

仕組みWebView

Java

C/C++

2010年2月13日土曜日

Page 4: Androidのブラウザでスクレイピング

WebViewとは?WebKitをJavaから使い易いようにラッピングしたもの

アプリケーション内にブラウザを埋め込んで、外(Java)から操作できる

ブラウザ内で動いているJavaScriptから、アプリ本体のJavaコードを呼べる!

2010年2月13日土曜日

Page 5: Androidのブラウザでスクレイピング

WebViewの動作モデルアプリ(Java) ブラウザ(WebView)①http://www.google.com

を読み込め HTML

JavaScript④javascript:demo.hello(document.title);を実行

⑤HTMLのタイトル

②HTTP

パース③読み込んだよー

demoオブジェクトブックマークレットっぽい

2010年2月13日土曜日

Page 6: Androidのブラウザでスクレイピング

スクレイピングするには欲しいサイトを読み込んで、ブラウザ上のJavaScriptでDOMでもXPathでも好きなものを使って情報を取得し、Javaへのインターフェイスオブジェクトに渡すとってもらくちん

2010年2月13日土曜日

Page 7: Androidのブラウザでスクレイピング

何が嬉しいのか?文字コードの推定やコンバート、タグの閉じ忘れなど壊れたHTMLへの対処、SSLやログインセッションへの対応など、細かい部分は自動的に対応してくれる

自作するとかなり大変!

2010年2月13日土曜日

Page 8: Androidのブラウザでスクレイピング

Ajax前提サイトの場合フツウは静的なデータしか取得できない(JavaScriptが動かないので)

Androidを使うとJavaScriptが動くので、非同期通信によるサーバ側からのデータをうまくフックできれば、動的なデータも取得できる今のところAjaxなどの動的データはAndroidを使うのが一番簡単!

2010年2月13日土曜日

Page 9: Androidのブラウザでスクレイピング

Ajaxなスクレイピングアプリ(Java) ブラウザ(WebView)①http://www.hoge.com

を読み込め HTML

JavaScript

④フックしたデータ

②HTTP

HTML取得

インターフェイスオブジェクト

③非同期通信

ここをフック

2010年2月13日土曜日

Page 10: Androidのブラウザでスクレイピング

おしまい今朝のAndroid MLあたりに詳細が載ってます!

2010年2月13日土曜日