SlideShare a Scribd company logo
1 of 11
Rubyによるクローラー開発
2015/02/26(Thur) kada
contents
1. クローラーの概要
2. webwebでの活用例
3. 実装で困ったこと
4. ブラウザタイプのクローラー
1. クローラーの概要
クローラーとは?
- システムがwebページを自動巡回して情報を収集す
るプログラム
ex. googleの検索エンジン、マーケティング分析
関連ライブラリ
- anemone, nokogiri, kconv, capybara, poltergeist,
selenium-webdriver, etc...
クローラーの構造
<anemoneのメイン処理>
①巡回サイトのURLを指定
②除外対象ページのURLパターンを指定
③巡回対象ページのURLを指定
④取得したページに対して、正規表現で一致したペー
ジのみ処理
⑤取得したすべてに対しての処理
⑥ストレージに対する処理
example
今回は取得したいURLが
http://media-
radar.jp/detail****.html
の形をしているので、該当部分
を正規表現で抜粋できる。
(ただし巡回の深さは
depth_limit=>1としている)
xpathやCSSセレクタで構文解
析しても良い。
・・・ 取得したいURL => ④にあたる
・・・ skipしたいURL
2. webwebでの活用例
webページのmetaタグ解析
- description, commentの取得
- 巡回しなくても取得できる場合はnokogiriが基本
コードリーディング!
example
1. scrapeメソッド
- 指定したURLのHTMLをパース
- xpathでmetaタグの構文解析
2. get_descriptionメソッド
- meta name = “description”のcontent部分をゲッ
ト!
3. 実装で困ったこと
- 文字化け(kconvでほぼ解決!)
- xpath指定
- リダイレクト(open_uri_redirectionsで解決!)
- proxy設定(大学でできないorz)
4. ブラウザタイプのクローラー
- anemoneはフォーム入力による画面遷移・対話処理
やJavaScriptの実行はサポートされていない!
- テスト自動化の分野でのブラウザを操作するライブ
ラリを活用 => Capybara, Selenium
Capybara概念図
Capybara
DSL
Driver
Cucumber
MiniTest::Spec
Test::Unit
Rspec
Poltergeist
RackTest
Webkit
Selenium
テストフレームワーク
ブラウザシミュレータ
参考図書
- 「Rubyによるクローラー開発技法」

More Related Content

What's hot

Getting start with knockout.js
Getting start with knockout.jsGetting start with knockout.js
Getting start with knockout.js
Akio Ishida
 
「新しい」を生み出すためのWebアプリ開発とその周辺
「新しい」を生み出すためのWebアプリ開発とその周辺「新しい」を生み出すためのWebアプリ開発とその周辺
「新しい」を生み出すためのWebアプリ開発とその周辺
Yusuke Wada
 
[大図解]ピグライフはこう動いている
[大図解]ピグライフはこう動いている[大図解]ピグライフはこう動いている
[大図解]ピグライフはこう動いている
Akihiro Kuwano
 
Node.jsではじめるサーバ構築
Node.jsではじめるサーバ構築Node.jsではじめるサーバ構築
Node.jsではじめるサーバ構築
AimingStudy
 

What's hot (20)

Innovation eggcloudnative
Innovation eggcloudnativeInnovation eggcloudnative
Innovation eggcloudnative
 
Crawler Commons
Crawler CommonsCrawler Commons
Crawler Commons
 
jQueryを中心としたJavaScript
jQueryを中心としたJavaScriptjQueryを中心としたJavaScript
jQueryを中心としたJavaScript
 
20150523
 20150523 20150523
20150523
 
Node.jsで始める Modern JavaScript Framework
Node.jsで始める Modern JavaScript FrameworkNode.jsで始める Modern JavaScript Framework
Node.jsで始める Modern JavaScript Framework
 
Sails.jsのメリット・デメリット
Sails.jsのメリット・デメリットSails.jsのメリット・デメリット
Sails.jsのメリット・デメリット
 
JekyllとBootstrapを使って静的なブログを作ってみたよ
JekyllとBootstrapを使って静的なブログを作ってみたよJekyllとBootstrapを使って静的なブログを作ってみたよ
JekyllとBootstrapを使って静的なブログを作ってみたよ
 
Rubyで操るAWS 第67回Ruby関西 勉強会
Rubyで操るAWS 第67回Ruby関西 勉強会Rubyで操るAWS 第67回Ruby関西 勉強会
Rubyで操るAWS 第67回Ruby関西 勉強会
 
Node.js で Web アプリ開発
Node.js で Web アプリ開発Node.js で Web アプリ開発
Node.js で Web アプリ開発
 
Node js 入門
Node js 入門Node js 入門
Node js 入門
 
MVCフレームワーク Sails.jsについて機能紹介
MVCフレームワーク Sails.jsについて機能紹介MVCフレームワーク Sails.jsについて機能紹介
MVCフレームワーク Sails.jsについて機能紹介
 
Getting start with knockout.js
Getting start with knockout.jsGetting start with knockout.js
Getting start with knockout.js
 
Hello, Node.js
Hello, Node.jsHello, Node.js
Hello, Node.js
 
TypeScriptへの入口
TypeScriptへの入口TypeScriptへの入口
TypeScriptへの入口
 
小規模案件で作られた秘伝のタレ
小規模案件で作られた秘伝のタレ小規模案件で作られた秘伝のタレ
小規模案件で作られた秘伝のタレ
 
「新しい」を生み出すためのWebアプリ開発とその周辺
「新しい」を生み出すためのWebアプリ開発とその周辺「新しい」を生み出すためのWebアプリ開発とその周辺
「新しい」を生み出すためのWebアプリ開発とその周辺
 
[大図解]ピグライフはこう動いている
[大図解]ピグライフはこう動いている[大図解]ピグライフはこう動いている
[大図解]ピグライフはこう動いている
 
Node.js を選ぶとき 選ばないとき
Node.js を選ぶとき 選ばないときNode.js を選ぶとき 選ばないとき
Node.js を選ぶとき 選ばないとき
 
About SnapKit - Open source lab -
About SnapKit - Open source lab -About SnapKit - Open source lab -
About SnapKit - Open source lab -
 
Node.jsではじめるサーバ構築
Node.jsではじめるサーバ構築Node.jsではじめるサーバ構築
Node.jsではじめるサーバ構築
 

Viewers also liked

Viewers also liked (19)

eBay Partner Network & Optimizely: Optimization Best Practices
eBay Partner Network & Optimizely: Optimization Best PracticeseBay Partner Network & Optimizely: Optimization Best Practices
eBay Partner Network & Optimizely: Optimization Best Practices
 
スマホ対応
スマホ対応スマホ対応
スマホ対応
 
冴えない動画の育てかた
冴えない動画の育てかた冴えない動画の育てかた
冴えない動画の育てかた
 
Androidアプリ開発
Androidアプリ開発Androidアプリ開発
Androidアプリ開発
 
レガシコード改善ガイド
レガシコード改善ガイドレガシコード改善ガイド
レガシコード改善ガイド
 
クローラを作る技術と設計 (毎週のハンズオン勉強会資料)
クローラを作る技術と設計 (毎週のハンズオン勉強会資料)クローラを作る技術と設計 (毎週のハンズオン勉強会資料)
クローラを作る技術と設計 (毎週のハンズオン勉強会資料)
 
45分で理解する webクローリング入門 斉藤之雄
45分で理解する webクローリング入門 斉藤之雄45分で理解する webクローリング入門 斉藤之雄
45分で理解する webクローリング入門 斉藤之雄
 
リーン顧客開発
リーン顧客開発リーン顧客開発
リーン顧客開発
 
Google cast開発入門
Google cast開発入門Google cast開発入門
Google cast開発入門
 
Webサービスを分類してみた
Webサービスを分類してみたWebサービスを分類してみた
Webサービスを分類してみた
 
コミュニティーマネージャー
コミュニティーマネージャーコミュニティーマネージャー
コミュニティーマネージャー
 
クライアントサイドjavascript簡単紹介
クライアントサイドjavascript簡単紹介クライアントサイドjavascript簡単紹介
クライアントサイドjavascript簡単紹介
 
マジシャン視点で考える心理術
マジシャン視点で考える心理術マジシャン視点で考える心理術
マジシャン視点で考える心理術
 
Vim活用術 初級編
Vim活用術 初級編Vim活用術 初級編
Vim活用術 初級編
 
グロースハックのマインドセット
グロースハックのマインドセットグロースハックのマインドセット
グロースハックのマインドセット
 
Startup Science ⑤
Startup Science ⑤Startup Science ⑤
Startup Science ⑤
 
Startup Science ④
Startup Science ④Startup Science ④
Startup Science ④
 
解説!30分で分かるLEAN ANALYTICS
解説!30分で分かるLEAN ANALYTICS解説!30分で分かるLEAN ANALYTICS
解説!30分で分かるLEAN ANALYTICS
 
ウェブから情報をあつめる
ウェブから情報をあつめるウェブから情報をあつめる
ウェブから情報をあつめる
 

Similar to Rubyによるクローラー開発

What makes pyramid unique
What makes pyramid uniqueWhat makes pyramid unique
What makes pyramid unique
Atsushi Odagiri
 
わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~
わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~
わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~
normalian
 
Pythonで検索エンジン2
Pythonで検索エンジン2Pythonで検索エンジン2
Pythonで検索エンジン2
Yasukazu Kawasaki
 
The Essence of Using Ruby on Rails in Corporations
The Essence of Using Ruby on Rails in CorporationsThe Essence of Using Ruby on Rails in Corporations
The Essence of Using Ruby on Rails in Corporations
Koichiro Ohba
 

Similar to Rubyによるクローラー開発 (20)

PythonによるWebスクレイピング入門
PythonによるWebスクレイピング入門PythonによるWebスクレイピング入門
PythonによるWebスクレイピング入門
 
Jjug springセッション
Jjug springセッションJjug springセッション
Jjug springセッション
 
HerokuでRailsアプリ運用の パフォーマンス、SEO対策
HerokuでRailsアプリ運用の パフォーマンス、SEO対策HerokuでRailsアプリ運用の パフォーマンス、SEO対策
HerokuでRailsアプリ運用の パフォーマンス、SEO対策
 
What makes pyramid unique
What makes pyramid uniqueWhat makes pyramid unique
What makes pyramid unique
 
Isomorphic web development with scala and scala.js
Isomorphic web development  with scala and scala.jsIsomorphic web development  with scala and scala.js
Isomorphic web development with scala and scala.js
 
Om Next ~React.jsを超えて
Om Next ~React.jsを超えてOm Next ~React.jsを超えて
Om Next ~React.jsを超えて
 
Web制作勉強会 #2
Web制作勉強会 #2Web制作勉強会 #2
Web制作勉強会 #2
 
JavaScript And Keywords
JavaScript And KeywordsJavaScript And Keywords
JavaScript And Keywords
 
Re-frame and A-Frame
Re-frame and A-FrameRe-frame and A-Frame
Re-frame and A-Frame
 
クラウドデザインパターンから始めるクラウドの利点と弱点の理解~提案から設計・開発・保守に活かす!~
クラウドデザインパターンから始めるクラウドの利点と弱点の理解~提案から設計・開発・保守に活かす!~クラウドデザインパターンから始めるクラウドの利点と弱点の理解~提案から設計・開発・保守に活かす!~
クラウドデザインパターンから始めるクラウドの利点と弱点の理解~提案から設計・開発・保守に活かす!~
 
MediaRecorder と WebM で、オレオレ Live Streaming
MediaRecorder と WebM で、オレオレ Live StreamingMediaRecorder と WebM で、オレオレ Live Streaming
MediaRecorder と WebM で、オレオレ Live Streaming
 
わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~
わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~
わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~
 
Pythonで検索エンジン2
Pythonで検索エンジン2Pythonで検索エンジン2
Pythonで検索エンジン2
 
ログ管理のベストプラクティス
ログ管理のベストプラクティスログ管理のベストプラクティス
ログ管理のベストプラクティス
 
The Essence of Using Ruby on Rails in Corporations
The Essence of Using Ruby on Rails in CorporationsThe Essence of Using Ruby on Rails in Corporations
The Essence of Using Ruby on Rails in Corporations
 
Haikara
HaikaraHaikara
Haikara
 
BestGems.org -RubyGemsランキングサイトのご紹介-
BestGems.org -RubyGemsランキングサイトのご紹介-BestGems.org -RubyGemsランキングサイトのご紹介-
BestGems.org -RubyGemsランキングサイトのご紹介-
 
SPA時代のOGPとの戦い方
SPA時代のOGPとの戦い方SPA時代のOGPとの戦い方
SPA時代のOGPとの戦い方
 
Mvc conf session_5_isami
Mvc conf session_5_isamiMvc conf session_5_isami
Mvc conf session_5_isami
 
サーバレス構成の運用・監視と自社製Data○ogもどきの話 公開用
サーバレス構成の運用・監視と自社製Data○ogもどきの話 公開用サーバレス構成の運用・監視と自社製Data○ogもどきの話 公開用
サーバレス構成の運用・監視と自社製Data○ogもどきの話 公開用
 

Recently uploaded

Recently uploaded (10)

Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 

Rubyによるクローラー開発