BLOG
JavaScriptスクレイピング
2015/2/8
WebスクレイピングとはWebページのHTMLデータを収集して、特定のデータを抽出、整形し直すことです。
もちろんサーバに過剰にコールして負荷をかけたり、ページをまるごとコピーして、コピーサイトを作ることはよくありません。
PHPでもJavaでもスクレイピング用ライブラリは用意されていますが今回はJavaScriptスクレイピング、クライアントサイドのみで試してみました。
jQueryを使ってajaxでDOMを非同期で作成しています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
$(function() { $.ajax({ url: 'http://XXXX', type: 'get', dataType: 'html', success: function(data) { $(data.responseText).find('.block').each(function() { var text = $(this).find('.title').text(); $('#content').append(text); }); }, error: function(data) { $('#content').html('読み込みに失敗しました。'); } }); }); |
問題点としては
クロスドメインでのAjaxでは、セキュリティ上クロスドメインでは通信できない制約があります。
回避方法は
・’Access-Control-Allow-Origin’ヘッダを付与する。
・JSONPで行う。
・jquery.xdomainajax.jsを使用する。
です。
クライアントサイドだけで解決するならjquery.xdomainajax.jsを使うしかなさそうです。
またクライアントサイドスクレイピングはクライアントサイドに負荷がかかりすぎるかなと思います。
PHPスクレイピング用ライブラリは
・Goutte
・Simple HTML DOM Parser
等があり試してみたいなと思いました。
またWebスクレイピングしてWebサービスを作る場合、他サーバへのコールやコンテンツの再利用をどこまでやっていいのか気になりました。規約面、法律面を明確に理解したです。
Tag:Ajax JavaScript スクレイピング