SlideShare a Scribd company logo
1 of 54
Download to read offline
ふるかわだいすけ/mogya.com
飲食店サイトの
スクレイピング
自己紹介
ふるかわだいすけ(もぎゃ)
フリーランスWEBエンジニア
http://mogya.com/
Twitter: @mogya
モバイラーズオアシス
http://oasis.mogya.com/
モバイラーズオアシス
http://oasis.mogya.com/
六周年!
今日のテーマ
飲食店サイトの
スクレイピング
目次
• どんなことをしているか
• 情報のパース
• サイトの巡回
• キャッシュについて
• 困ったサイトへの対応
• スケジューラについて
• 法的な側面について
あさーく行きます
• どんなことをしているか
• 情報のパース
• サイトの巡回
• キャッシュについて
• 困ったサイトへの対応
• スケジューラについて
• 法的な側面について
目次
• どんなことをしているか
• 情報のパース
• サイトの巡回
• キャッシュについて
• 困ったサイトへの対応
• スケジューラについて
• 法的な側面について
モバイラーズオアシスで見られる情報
情報提供フォーム
あたりまえです
こんなめんどくさいものに
入力してくれる人はいない
このくらいが限界
このために必要なもの
スクレイピング
デモ
デモ
目的はたくさん
• 店舗登録のためのスクレイピング
• 新店舗を見つけるためのスクレイピング
• 情報を更新するため
• etc
目次
• どんなことをしているか
• 情報のパース
• サイトの巡回
• キャッシュについて
• 困ったサイトへの対応
• スケジューラについて
• 法的な側面について
こうなっているところから
http://www.mcdonalds.co.jp/shop/map/map.php?strcode=01570
店名を取ってみる
require 'hpricot'
require 'open-uri'
url =
'http://www.mcdonalds…map.php?strcode=01570'
page = Hpricot( open(url).read );nil
page.search(".Shopname h3").inner_text
という話を6年前にした
http://www.slideshare.net/mogya/ss-3836905
時間がないので略
http://amazon.jp/dp/4797380357/mogya-22/ref=nosim/
目次
• どんなことをしているか
• 情報のパース
• サイトの巡回
• キャッシュについて
• 困ったサイトへの対応
• スケジューラについて
• 法的な側面について
id=xxxx方式
http://www.mcdonalds.co.jp/shop/map/map.php?strcode=01578
一覧ページ→詳細ページ
http://www.bagus-99.com/company/shop.html
「次へ」対応
http://www.mapion.co.jp・・・search=mapAreabtn
ほとんどのサイトで使える
目次
• どんなことをしているか
• サイトの巡回
• 情報のパース
• キャッシュについて
• 困ったサイトへの対応
• スケジューラについて
• 法的な側面について
よくあるスクレイピング
よくあるプログラミング
ページをダウンロード
↓
ページをパース(あ、バグってる)
↓
ページをダウンロード
↓
Twitterを見に行く
(五秒)
(五秒)
よくあるプログラミング
ページをダウンロード
↓
ページをパース
↓
ページをダウンロード
↓
(100ページくらい経過)
↓
ページをパース(あ、失敗した)
↓
1ページ目からもう一回
キャッシュが必要!
こういうものがほしい
つくった
https://gist.github.com/mogya/ec02020b8af8cbeec750
・wgetを呼び出してページ取得
・wgetがキャッシュを作成
・wgetのキャッシュファイルを返す
目次
• どんなことをしているか
• 情報のパース
• サイトの巡回
• キャッシュについて
• 困ったサイトへの対応
• スケジューラについて
• 法的な側面について
昔あった事例
昔あった事例
昔あった事例
page =
Hpricot(
open(url).read.gsub(
"</script>n<body>","</script>n“
)
);nil
問題:xpathで読めなくなってしまう
対策:読み込んだタイミングで直してしまう
目次
• どんなことをしているか
• 情報のパース
• サイトの巡回
• キャッシュについて
• 困ったサイトへの対応
• スケジューラについて
• 法的な側面について
3年位前の状況
• 件数が増えると、いつなにをやってい
るのかわからなくなってくる
• 失敗したタスクはどれ?ログはどこ?
jenkins
今後の課題
• 重い
• スクレイピングよりスケジューラのほうが重い
• 低価格サーバには厳しい><
• もっとクレバーにやってほしい
• 何時にやるかは重要でない
• 1つタスクが終わったら次を実行
• 優先度別にタスクを実施
• 月に一回してほしいタスク
• ヒマな時でよいタスク
目次
• どんなことをしているか
• サイトの巡回
• 情報のパース
• キャッシュについて
• 困ったサイトへの対応
• スケジューラについて
• 法的な側面について
よくある話題
モバイラーズオアシスの対策
• 昼間:5秒に1ページ
• 夜間:1秒に1ページ
• 同じページは一ヶ月に一回しかア
クセスしない
歴史的経緯
2010年 librahack事件
→ 和解
歴史的経緯
2012年 著作権法改正
→「スクレイピングは犯罪じゃないよ」
別の問題
「人のサイトから集めた情報で
メシ食っていいと思ってんのか」
(メールで頂いたご意見)
→スクレイピングで集めた情報を
公開すると著作権の問題になる?
モバイラーズオアシスの解釈
• 「事実」は著作物じゃない
• 「文章」は著作物かもしれない
• 例)スターバックス茅場町の電話番号が03-xxxx-xxxx
• →単なる事実
• 例)スターバックス茅場町にはお客様用コンセントあり
• →単なる事実
• 例)「茅場町のスタバのカウンタには8個のコンセントが
用意されていました。コーヒー美味しかったです」
• →著作物...?
モバイラーズオアシスの解釈
https://ja.wikipedia.org/wiki/%E8%91%97%E4%BD%9C%E6%A8%A
モバイラーズオアシスの方針
・店名とか営業時間を公式サイトから持ってくることは問題ない
(サイトを落としたりしちゃ駄目)
・ブログとかで「 ◯ ◯ で電源使えました」て書いてあった
→電源が使えたという事実に著作権はないので、
ありがたく引用させていただく
・競合の電源情報サイト
→まるごと引っこ抜くと、「データベースは著作物」理論に引っ
かかるかもしれない。
→個別のお店の情報ソースとして見るぶんには問題ない(だろう)
モバイラーズオアシスの方針
• ぼくは法律の専門家じゃないし、しょぼい会社なので顧問弁護
士とか付けてません。
• 法的内容についてはぼくが勉強した解釈にすぎないので、 ご
自身の問題については法律関連の専門家にご相談ください。
• 交通ルールを守っても車はつっこんでくるのと同様、法律がい
いと言っても訴えられる可能性は常にありえます
ありがとうございました
おわり
ありがとうございました
• どんなことをしているか
• サイトの巡回
• 情報のパース
• キャッシュについて
• 困ったサイトへの対応
• スケジューラについて
• 法的な側面について

More Related Content

Viewers also liked

【cybozu conference 2015】nomizu 分科会
【cybozu conference 2015】nomizu 分科会【cybozu conference 2015】nomizu 分科会
【cybozu conference 2015】nomizu 分科会Katsuya Nomizu
 
エンジニア×デザイナー GitHubで変わるコミュニケーション(PHPカンファレンス2014 P4Dセッション)
エンジニア×デザイナー GitHubで変わるコミュニケーション(PHPカンファレンス2014 P4Dセッション)エンジニア×デザイナー GitHubで変わるコミュニケーション(PHPカンファレンス2014 P4Dセッション)
エンジニア×デザイナー GitHubで変わるコミュニケーション(PHPカンファレンス2014 P4Dセッション)Hiroyuki Yamaoka
 
スキニーなシステム開発にぴったりの契約形態
スキニーなシステム開発にぴったりの契約形態スキニーなシステム開発にぴったりの契約形態
スキニーなシステム開発にぴったりの契約形態Eiwa System Management, Inc.
 
AWSアカウント開設からインスタンスを立ち上げるまでの作業自動化について
AWSアカウント開設からインスタンスを立ち上げるまでの作業自動化についてAWSアカウント開設からインスタンスを立ち上げるまでの作業自動化について
AWSアカウント開設からインスタンスを立ち上げるまでの作業自動化について知教 本間
 
地方で集うビジネスにしないITラボ
地方で集うビジネスにしないITラボ地方で集うビジネスにしないITラボ
地方で集うビジネスにしないITラボTakeshi Yanagiya
 
ホラクラシー型組織~実際に8年経営してわかったこと~(ホラクラシーのメカニズム)
ホラクラシー型組織~実際に8年経営してわかったこと~(ホラクラシーのメカニズム)ホラクラシー型組織~実際に8年経営してわかったこと~(ホラクラシーのメカニズム)
ホラクラシー型組織~実際に8年経営してわかったこと~(ホラクラシーのメカニズム)Kozo Takei
 
これからの「アジャイル」の話をしよう ――今を生き延びるための開発手法とスキル (関西バージョン)
これからの「アジャイル」の話をしよう ――今を生き延びるための開発手法とスキル (関西バージョン)これからの「アジャイル」の話をしよう ――今を生き延びるための開発手法とスキル (関西バージョン)
これからの「アジャイル」の話をしよう ――今を生き延びるための開発手法とスキル (関西バージョン)Fumihiko Kinoshita
 
デザイナーでも構築できる多言語/マルチデバイス対応サイト
デザイナーでも構築できる多言語/マルチデバイス対応サイトデザイナーでも構築できる多言語/マルチデバイス対応サイト
デザイナーでも構築できる多言語/マルチデバイス対応サイトAtushi Sugiyama
 
足を地に着け落ち着いて考える
足を地に着け落ち着いて考える足を地に着け落ち着いて考える
足を地に着け落ち着いて考えるRyuji Tamagawa
 
ロボットのいる生活@enPiT
ロボットのいる生活@enPiTロボットのいる生活@enPiT
ロボットのいる生活@enPiTtomomi_pepper
 
ソフトウェア受託開発の未来
ソフトウェア受託開発の未来ソフトウェア受託開発の未来
ソフトウェア受託開発の未来Yoshihito Kuranuki
 
納品のない受託開発を支える レガシーコードを作らない仕組み
納品のない受託開発を支える レガシーコードを作らない仕組み納品のない受託開発を支える レガシーコードを作らない仕組み
納品のない受託開発を支える レガシーコードを作らない仕組みMasahiro Nishimi
 
【基調講演】変える覚悟、変わる覚悟。
【基調講演】変える覚悟、変わる覚悟。【基調講演】変える覚悟、変わる覚悟。
【基調講演】変える覚悟、変わる覚悟。Cybozucommunity
 
Apple審査を一発通過! iOS開発経験0でも出来る じげん流Swift開発のすべて
Apple審査を一発通過!iOS開発経験0でも出来るじげん流Swift開発のすべてApple審査を一発通過!iOS開発経験0でも出来るじげん流Swift開発のすべて
Apple審査を一発通過! iOS開発経験0でも出来る じげん流Swift開発のすべてMasaru Gushiken
 
探索的テスト入門
探索的テスト入門探索的テスト入門
探索的テスト入門H Iseri
 
サービスをつくりなおす決断をするとき
サービスをつくりなおす決断をするときサービスをつくりなおす決断をするとき
サービスをつくりなおす決断をするときMasaki Yamamoto
 
エンタープライズパッケージを利用しました〜HTML Exporter編〜
エンタープライズパッケージを利用しました〜HTML Exporter編〜エンタープライズパッケージを利用しました〜HTML Exporter編〜
エンタープライズパッケージを利用しました〜HTML Exporter編〜Yuzuru Sano
 
クラウド時代だからこそ見直したい
PHPアプリケーションのパフォーマンスチューニング
クラウド時代だからこそ見直したい
PHPアプリケーションのパフォーマンスチューニングクラウド時代だからこそ見直したい
PHPアプリケーションのパフォーマンスチューニング
クラウド時代だからこそ見直したい
PHPアプリケーションのパフォーマンスチューニングTerui Masashi
 

Viewers also liked (20)

【cybozu conference 2015】nomizu 分科会
【cybozu conference 2015】nomizu 分科会【cybozu conference 2015】nomizu 分科会
【cybozu conference 2015】nomizu 分科会
 
エンジニア×デザイナー GitHubで変わるコミュニケーション(PHPカンファレンス2014 P4Dセッション)
エンジニア×デザイナー GitHubで変わるコミュニケーション(PHPカンファレンス2014 P4Dセッション)エンジニア×デザイナー GitHubで変わるコミュニケーション(PHPカンファレンス2014 P4Dセッション)
エンジニア×デザイナー GitHubで変わるコミュニケーション(PHPカンファレンス2014 P4Dセッション)
 
スキニーなシステム開発にぴったりの契約形態
スキニーなシステム開発にぴったりの契約形態スキニーなシステム開発にぴったりの契約形態
スキニーなシステム開発にぴったりの契約形態
 
大企業Hacks!
大企業Hacks!大企業Hacks!
大企業Hacks!
 
AWSアカウント開設からインスタンスを立ち上げるまでの作業自動化について
AWSアカウント開設からインスタンスを立ち上げるまでの作業自動化についてAWSアカウント開設からインスタンスを立ち上げるまでの作業自動化について
AWSアカウント開設からインスタンスを立ち上げるまでの作業自動化について
 
地方で集うビジネスにしないITラボ
地方で集うビジネスにしないITラボ地方で集うビジネスにしないITラボ
地方で集うビジネスにしないITラボ
 
ホラクラシー型組織~実際に8年経営してわかったこと~(ホラクラシーのメカニズム)
ホラクラシー型組織~実際に8年経営してわかったこと~(ホラクラシーのメカニズム)ホラクラシー型組織~実際に8年経営してわかったこと~(ホラクラシーのメカニズム)
ホラクラシー型組織~実際に8年経営してわかったこと~(ホラクラシーのメカニズム)
 
これからの「アジャイル」の話をしよう ――今を生き延びるための開発手法とスキル (関西バージョン)
これからの「アジャイル」の話をしよう ――今を生き延びるための開発手法とスキル (関西バージョン)これからの「アジャイル」の話をしよう ――今を生き延びるための開発手法とスキル (関西バージョン)
これからの「アジャイル」の話をしよう ――今を生き延びるための開発手法とスキル (関西バージョン)
 
デザイナーでも構築できる多言語/マルチデバイス対応サイト
デザイナーでも構築できる多言語/マルチデバイス対応サイトデザイナーでも構築できる多言語/マルチデバイス対応サイト
デザイナーでも構築できる多言語/マルチデバイス対応サイト
 
足を地に着け落ち着いて考える
足を地に着け落ち着いて考える足を地に着け落ち着いて考える
足を地に着け落ち着いて考える
 
ロボットのいる生活@enPiT
ロボットのいる生活@enPiTロボットのいる生活@enPiT
ロボットのいる生活@enPiT
 
ソフトウェア受託開発の未来
ソフトウェア受託開発の未来ソフトウェア受託開発の未来
ソフトウェア受託開発の未来
 
世界最強のソフトウェアアーキテクト
世界最強のソフトウェアアーキテクト世界最強のソフトウェアアーキテクト
世界最強のソフトウェアアーキテクト
 
納品のない受託開発を支える レガシーコードを作らない仕組み
納品のない受託開発を支える レガシーコードを作らない仕組み納品のない受託開発を支える レガシーコードを作らない仕組み
納品のない受託開発を支える レガシーコードを作らない仕組み
 
【基調講演】変える覚悟、変わる覚悟。
【基調講演】変える覚悟、変わる覚悟。【基調講演】変える覚悟、変わる覚悟。
【基調講演】変える覚悟、変わる覚悟。
 
Apple審査を一発通過! iOS開発経験0でも出来る じげん流Swift開発のすべて
Apple審査を一発通過!iOS開発経験0でも出来るじげん流Swift開発のすべてApple審査を一発通過!iOS開発経験0でも出来るじげん流Swift開発のすべて
Apple審査を一発通過! iOS開発経験0でも出来る じげん流Swift開発のすべて
 
探索的テスト入門
探索的テスト入門探索的テスト入門
探索的テスト入門
 
サービスをつくりなおす決断をするとき
サービスをつくりなおす決断をするときサービスをつくりなおす決断をするとき
サービスをつくりなおす決断をするとき
 
エンタープライズパッケージを利用しました〜HTML Exporter編〜
エンタープライズパッケージを利用しました〜HTML Exporter編〜エンタープライズパッケージを利用しました〜HTML Exporter編〜
エンタープライズパッケージを利用しました〜HTML Exporter編〜
 
クラウド時代だからこそ見直したい
PHPアプリケーションのパフォーマンスチューニング
クラウド時代だからこそ見直したい
PHPアプリケーションのパフォーマンスチューニングクラウド時代だからこそ見直したい
PHPアプリケーションのパフォーマンスチューニング
クラウド時代だからこそ見直したい
PHPアプリケーションのパフォーマンスチューニング
 

More from だいすけ ふるかわ

スタートアップツールチラ見せナイト エニタイムズ
スタートアップツールチラ見せナイト エニタイムズスタートアップツールチラ見せナイト エニタイムズ
スタートアップツールチラ見せナイト エニタイムズだいすけ ふるかわ
 
LibraHack後の スクレイピングを 考える
LibraHack後の スクレイピングを 考えるLibraHack後の スクレイピングを 考える
LibraHack後の スクレイピングを 考えるだいすけ ふるかわ
 
Html5で作るiPhoneアプリケーション2010
Html5で作るiPhoneアプリケーション2010Html5で作るiPhoneアプリケーション2010
Html5で作るiPhoneアプリケーション2010だいすけ ふるかわ
 
HTML5で作るiPhoneアプリケーション
HTML5で作るiPhoneアプリケーションHTML5で作るiPhoneアプリケーション
HTML5で作るiPhoneアプリケーションだいすけ ふるかわ
 
プログラマがデザインをがんばってみた
プログラマがデザインをがんばってみたプログラマがデザインをがんばってみた
プログラマがデザインをがんばってみただいすけ ふるかわ
 

More from だいすけ ふるかわ (19)

スタートアップツールチラ見せナイト エニタイムズ
スタートアップツールチラ見せナイト エニタイムズスタートアップツールチラ見せナイト エニタイムズ
スタートアップツールチラ見せナイト エニタイムズ
 
FireFoxによるWebデザイン
FireFoxによるWebデザインFireFoxによるWebデザイン
FireFoxによるWebデザイン
 
Ti.developers.meeting
Ti.developers.meetingTi.developers.meeting
Ti.developers.meeting
 
Titanium mobile
Titanium mobileTitanium mobile
Titanium mobile
 
LibraHack後の スクレイピングを 考える
LibraHack後の スクレイピングを 考えるLibraHack後の スクレイピングを 考える
LibraHack後の スクレイピングを 考える
 
Html5で作るiPhoneアプリケーション2010
Html5で作るiPhoneアプリケーション2010Html5で作るiPhoneアプリケーション2010
Html5で作るiPhoneアプリケーション2010
 
HTML5で作るiPhoneアプリケーション
HTML5で作るiPhoneアプリケーションHTML5で作るiPhoneアプリケーション
HTML5で作るiPhoneアプリケーション
 
Webteko#10 GoogleMaps
Webteko#10 GoogleMapsWebteko#10 GoogleMaps
Webteko#10 GoogleMaps
 
すまべん20091114
すまべん20091114すまべん20091114
すまべん20091114
 
Webteko 20090925
Webteko 20090925Webteko 20090925
Webteko 20090925
 
プログラマがデザインをがんばってみた
プログラマがデザインをがんばってみたプログラマがデザインをがんばってみた
プログラマがデザインをがんばってみた
 
Amazon S3 Ec2
Amazon S3 Ec2Amazon S3 Ec2
Amazon S3 Ec2
 
Java Script入門
Java Script入門Java Script入門
Java Script入門
 
メールフォームを作る
メールフォームを作るメールフォームを作る
メールフォームを作る
 
メイドめーる
メイドめーるメイドめーる
メイドめーる
 
メイドめーる
メイドめーるメイドめーる
メイドめーる
 
Iepngfix
IepngfixIepngfix
Iepngfix
 
ememo_plesentation_2008-02-26
ememo_plesentation_2008-02-26ememo_plesentation_2008-02-26
ememo_plesentation_2008-02-26
 
Human Date20070907
Human Date20070907Human Date20070907
Human Date20070907
 

飲食店サイトのスクレイピング