第3回Webスクレイピング勉強会@東京(最終回)に参加しました

参加したのでメモ。
ちなみに今回が最終回で4回目の予定はないとのこと。
メモは自習用に書いているので発表資料に沿っていないものもあります。

発表資料はconnpassのページに全てあがっています。

togetterもあります。

クローリングしにくいものに挑戦(@lumin)

@luminさんの資料は後半ほとんど非公開になっている。
闇実装なので仕方がないところもありますが、資料を見てブログ(復習)を書こうと思っていたので当てが外れました。。

  • wgetはクローラで最も基本となるツールcurl再帰で使えないのでクローラとは呼べない、UAをブラウザにするとか、Cookieに対応するとかはクローラ作りでは常套手段
  • クローリングしにくいのはHttpsのようなProxy、WebSocket(最近少し下火)、SPDYはGoogleの開発した次世代のHTTPプロトコル
  • 特定されないようにしたい、匿名クローリングするにはTorを使う
  • クローリングしにくいページ
    • JavaScriptの動的コンテンツはページが読み込まれないと情報が取得できないので、ヘッドレスブラウザやブラウザでクローリングを行う、ブラウザはFirefoxがおすすめ
      • CasperJS
    • ガラケーのサイトはキャリアのIPアドレスに制限されているものがある
    • スマホサイトはUAJavaScriptで取得していたり、縦横表示の切り替え(Orientation)で判定しているためUAを偽造するだけではうまくいかない
    • 課金ダウンロードサイトはダウンロードするまで待たされるので、それが嫌なら課金してしまう
  • 日本と外国からではインターネットの見え方が異なる
    • 海外のVPSクラウドを借りてクローリングする
    • 通信料課金があるので注意が必要
    • RTTは重要でRTTが悪いと使いものにならない
  • P2PクローラでWinnyやShare、BitCoinなどののクローリングを行っている
  • Flashのスクレイビングは逆コンパイルで行う、ゲームのチートを取得したりする
  • データの保管はどうやっているのかという質問
    • MySQLに入れるとかKVSに入れるとか色々やっているが、KVSは大量データに向いていない、TBオーダーになると厳しい

ソーシャルスクレイビング(仮)(@YuzoAkakura)

@nezuqさん曰く、これまでの勉強会では技術がメインで事例についての発表がなかった。
最近、データジャーナリズムというのが注目されており、データジャーナリズムの第一人者である@YuzoAkakuraさんに発表をお願いしたとのこと。

  • データジャーナリズムとは「データからニュースを発見し、わかりやすく伝える手段」
  • New York Times
    • 全米の水質に関する2009年の調査報道
    • 水質データを地図にマッピングすることで、汚染水を垂れ流していた企業、施設を特定
      • これまでの報道は記事を書いて終わりだったので伝わりずらい
      • 地図上に表現されることで住んでいる地域がどうなのか身近な問題として捉えやすくなる
  • データジャーナリズムが注目されたのはWikiLeaksが注目された時期と重なる
  • データジャーナリズムのリソースはソーシャルメディア、オープンデータ(政府、自治体、企業)、センサーデータなどの多種多様かつ膨大なデータであり、日々生み出され続けている
  • データジャーナリズムはニュースの表現方法、発見方法、制作プロセスに革新を起こしている
    • ニュースの表現方法はこれまでテキスト中心であったが地図や動画、アニメーションなどの多様な表現を組み合わされるようになった
    • ニュース発見方法は取材対象として「データ」がより重視されるようになった
    • ニュースの制作プロセスでは制作過程の分業が浸透してきた
      • ProPublicaやICIJなどの報道団体がある
  • データジャーナリズムのポイントはデータを探すこと
  • ソーシャル・スクレイピング=社会との関わりを持ったWebスクレイピング
  • Journalism Innovation Awardを企画している
  • データジャーナリズムは技術者が不足しているので興味がある方は試してほしい

LT

AWSを利用してスクレイピングの悩みを解決するチップス(@dkfj)

Rubyによるクローラー開発技法」の著者である@dkfjさんの発表。
書籍でいうと「6-4 クラウドを活用する」に書かれている内容です。

Rubyによるクローラー開発技法 巡回・解析機能の実装と21の運用例

Rubyによるクローラー開発技法 巡回・解析機能の実装と21の運用例

じっくりと読めていませんが@luminさんの発表にあったJavaScriptのページのスクレイビングについての解説もあり、Webデータを取得したい人にとってはとても参考になります。

  • データ収集の課題
    • クローリングに時間が掛かる
      • 収集先が膨大、収集データが大きい
    • IPアドレス制限
      • 単位時間あたりで既定の回数を超えるとブロックされる
      • IPアドレスをトリガーにされる(Google BAN)
      • 会社のプロキシサーバをBANされると会社全体に影響が出てしまう
    • データの保存方法
      • 収集したデータを長時間保存したい
  • AWS(EC2, S3, SQS)で解決できる
    • EC2を並べて稼働
    • EC2の処理結果をS3に集約
    • SQSでジョブ制御
  • 巡回先サイトに配慮する
    • 巡回する時間間隔を空ける(1秒ルール)
    • 同一サイトを対象にする場合は多重度をあげない
      • GoogleAmazonなら問題にはならないけど中小のシステムだと1秒あたり20~30件ほどしか処理できないこともある
    • Robots.txtに従う

私が開発しているhappyou.infoについて(@shogookamoto)

次回があれば肝となる抽出手法の発表を聞きたい内容。
学術研究では半構造データのマイニング、繰り返し構造のマイニングという分野かと思われます。
なんでもRSSを開発した東工大 奥村研が国内では第一人者ですが、なんでもRSSは10年ぐらい前のツールなので最新の研究動向はどうかなと思います。

リサーチ向け・ブラウザだけでスクレイピング(@hirosuke_asano)

実践Excelスクレイピング(@h_sinohara)

  • Perlスクレイピングはめんどい
  • ExcelでWebスクレイピング
    • Webクエリという機能がExcel2003からある
      • URLを指定してデータを選択して取り込むことができる
      • Webページが更新された場合に再取得することが可能
    • Excel2013からは取得データの可視化もできる
      • Power Viewのマップ

その他(@nezuq)

感想

東京スクラッパーの勉強会は3回目ですが、今回もよい勉強になりました。
アンケートではPythonが人気のようで、自分もPythonユーザとして是非ともPythonのクローラ本がほしいなと思いました。