Más contenido relacionado
La actualidad más candente (20)
Similar a Rubyで始めるWebスクレイピング (20)
Más de Takuro Sasaki (11)
Rubyで始めるWebスクレイピング
- 4. ✦ プロフィール
‣ Webシステムを得意とするSIerで勤務
‣ 最近の仕事はAWS事業の推進・インフラチームのマネジメント
‣ Webスクレイピングして、データマイニングするのが趣味
★ ソーシャル・ネットワーク
‣ blog: http://blog.takuros.net/
‣ twitter: @dkfj
‣ Facebook: takuro.sasaki
‣ SlideShare: http://www.slideshare.net/takurosasaki/
@dkfj
自己紹介: 佐々木拓郎
- 8. RubyでWebスクレイピング
• Open-URI
• Nokogiri
• Anemone
• Capybara+Selenium
• cosmiccrawler
• CocProxy
基本的なライブラリ
クローラー
フレームワーク
補助的なライブラリ
- 10. • HTML/XMLの構文解析器(パーサー)
• ほぼデファクトスタンダード
• XPath or CSSセレクタで、HTML中の要素を選択
• UTF-8以外の文字コードを扱う場合は注意
require 'nokogiri'
require 'open-uri'
!
doc = Nokogiri.HTML(open("http://nokogiri.org/"))
doc.css('a').each do |element|
puts element[:href]
end
参照:Ruby製の構文解析ツール、Nokogiriの使い方 with Xpath
http://blog.takuros.net/entry/2014/04/15/070434
- 11. • Ruby製のクローラーフレームワーク
• データ収集/解析/保存の全ての機能がある
• 2年ほどメンテナンスされていない
• ScrapyのあるPythonがうらやましい今日この頃
require 'anemone'
!
Anemone.crawl("http://www.hatena.ne.jp/") do |anemone|
anemone.on_every_page do |page|
puts page.url
puts page.doc.xpath("//head/title/text()").first.to_s if page.doc
end
end
Anemone
参照:オープンソースのRubyのWebクローラー"Anemone"を使ってみる
http://blog.takuros.net/entry/20110204/1296781291
- 12. Capybara+Selenium
• 基本的には、UIテストツール
• ブラウザを使うので、JavaScriptにも対応可能
• スクレイピング部分は、Nokogiriを利用
• CapybaraをラッパーしたMasqueというクローラー
• ブラウザ代わりに、PhantomJSを使うのもあり
参照:JavaScriptにも対応出来るruby製のクローラー、Masqueを試してみる
http://blog.takuros.net/entry/20131223/1387814711
参照:Capybara-DSLのはなし
http://blog.takuros.net/entry/20140322/1395464375
- 13. cosmicrawler
• 並列処理を得意とするクローラー
• 並列処理の実装は、EventMachine
• EventMachineの面倒くさい処理を隠蔽してくれる
require 'cosmicrawler'
!
Cosmicrawler.http_crawl(%w(http://b.hatena.ne.jp/hotentry/it http://
b.hatena.ne.jp/hotentry/life)) {|request|
get = request.get
puts get.response if get.response_header.status == 200
}
参照:複数並行可能なRubyのクローラー、「cosmicrawler」を試してみた
http://blog.takuros.net/entry/20140103/1388701372
- 14. CocProxy
• ほぼピュアRubyで実装されたプロキシサーバ
• 開発用途で、クローラー作成時に便利
• 訪問済みのサイトをキャッシュしてくれる
• 訪問先サイトに無駄に負荷を掛けずに試行錯誤できる
参照:開発用プロキシ、「CocProxy」が便利
http://blog.takuros.net/entry/2014/05/05/120747
- 18. Google Maps APIの活用
• 1IP辺り1日2,500回のリクエスト制限
• 郵便番号(12万件)を、経度緯度に変換したい
• 120,000件/2,500回 ⇒ 48日
• AWSを利用して50台のサーバを使い1時間で完了
!
AWSでスポットインスタンスの活用
$0.0031×50台≒約16円
- 20. Twitter Streaming API
• 全Tweetのうち、数%だけに絞って提供されている
• それでも1日100万件近い分量
• 日本語のみ取り出すことも可能
!
参照:Rubyのtwitterライブラリで、Twitter Streaming APIが扱えるようになっていた
http://blog.takuros.net/entry/2014/05/19/002326
- 23. 引越にも
• 参加表明後に、突然の異動の辞令
• 7月から東京勤務
• 相場観がないので、賃貸サイトをスクレイピング
• 数十万件のデータから、駅ごとの㎡辺り単価の算出
!
GeoFUSEで視覚化しようとしたが
時間がなくて断念