トップページ > windows > WEBから情報の抜き出し(スクレイピング、スパイダリング)

最終更新日時2013-07-07
■目次

■本文

スクレイピング(scraping)とは

Webページから、利用者が必要としている情報を選択的に収集する技術です。スクレイピング(scraping)とは削ることの意味ですが、先の例で言えば株価を掲載しているWebページからレイアウトや色と言った付随的な情報を削り取り、必要な文字(数値)情報だけを取り出します。

スクレイピングの他の呼び方

  • スパイダリング(web Spidering)
  • WEBデータマイニング(Web Data Mining)
  • Web Harvesting←日本ではあまり使わない。らしい。

スクレイピングの使用例

  • yahooファイナンスから、社名とファンダメンタルを1000社分抜きだして一覧表にしたいとき。
→ただし、こういった株の相場を扱うパターンは、色々なサイトがあり、本も出ている。まさにこれをしたいならば、本買うのが一番早い。
例として2冊のリンクだけ貼っておく。


スクレイピングを始める前に必ず知っておきたいこと

逮捕されてしまうことがある

短時間に無数のアクセスをして更新データを取得しようとするのは、DoS攻撃と同じになる
スクレイピング業者がサイト側から彼らの財産侵害(trespass to chattels)をしてるとして訴えられるリスク
この辺のリスクは、巡回頻度をコントロールすることで回避できる
引用元: Audrey Watters「大規模データのスクレイピング、クリーニング、マネタイズ」 - クライアント・サイド・スクリプティング with Web Standards

実際の事件:岡崎図書館事件(librahack事件)


サイトにアクセスできなくなることがある

サイトの利用規約をよく読みましょう。スクレイピングが禁止されている場合や、制限が設けられている場合も多々あります。サイトの利用規約を読まずに、プログラムでアクセスすると、ブラウザからでさえサイトにアクセスできなることがあります。

実際の体験:googleが使えなくなりそうになりました。



スクレイピングの文字列指定方法

プログラム言語×文字列の指定方法(正規表現、XPATH、CSSセレクタ)


正規表現 XPATH CSSセレクタ その他
RUBY
java
javascript

動かすのは、色々なプログラム言語のうち一つを選べばよい。
しかし、文字列の指定方法は、複数を組み合わせた方が、より正確なスクレイピングができる。
例えば、正規表現だけを使うよりも、正規表現とXPATHの両方を使ったほうが、より正確にスクレイピングできる。

つまり、最低限のスクレイピングをする上では、
プログラム言語一つと、文字列の指定方法1つの計2つの考え方を学べばよいが、
より正確なスクレイピングをするためには、それに加えて文字列の指定方法を複数学ぶ必要がある。


XPATH

XPATHを取得する方法





正規表現

正規表現だけで本がかけてしまうので、使いかたの詳細は本を。

関連リンク


CSSセレクタ

不明。


スクレイピングのやり方(言語別)


対象となるサイトに以下のポイントがひとつ含まれているごとに難易度はあがる。
  • cookieを使う
  • ログインが必要
  • XMLではなく、ただのHTML
上記3点とも満たしていて、あなたがド素人なら即外注した方がいいと思う。


以下、すでに何かの言語が扱える人向けに言語別のスクレイピング方法。
初心者でも時間がありあまっている人もどうぞ。


■PERLによるスクレイピング




■RUBYによるスクレイピング



rubyでスクレイピングまとめ サイト名:北から南や西を見て思うこと:


■PHPによるスクレイピング




■javascript(jscript)によるスクレイピング






■pythonによるスクレイピング



■VB、VBAによるスクレイピング

対象となるサイトがXMLなら簡単にできる。
HTMLなら苦労するので、他の言語に切り替えたほうがいいと思う。
(VBAで、HTMLを対象としてXPATHを使うには、結局、javascriptもある程度理解している必要があるので。)
他のページに詳細あり - エクセルWEB連携

■Haskellによるスクレイピング


ScalaによるWebスクレイピング


その他、未精査


Yahoo! Pipes


Dapper


Junar



IDE「Web-Harvest」


ScraperWiki


WebView(Androidのwebブラウザコンポーネント)


Groovy



その他






ページフッタ

このページの1階層上のページ

このページの1階層下のページ

このページに含まれるタグ

このページへのアクセス数

今日: -
昨日: -
これまで合計: -


最終更新:2013年07月07日 06:45