狠狠撸

狠狠撸Share a Scribd company logo
ふるかわだいすけ/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

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