Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Capybaraで
雑にWebスクレイピング
@kozy4324
自己紹介
●
中村 浩士 (なかむら こうじ)
● @kozy4324 (GitHub, Twitter)
ポケモンGO やってますか?
ありがちなユースケース
●
ミニリュウかわいいよ、ミニリュウ!
●
会社近辺に出現したら 仕事をサボってでも
即座に捕まえに行かなければ!
●
ポケモン探索サービス (e.g. PokeVison) を
定期的にチェックして出現したら通知したい
Capybaraとは?
●
ブラウザテストのフレームワーク
●
ブラウザ操作の内部DSLを提供してくれる
●
ドライバを変更することでブラウザを
切り替えることが出来る
– Selenium (WebDriver)
– PhantomJS (ヘ...
これで問題解決を試みる!
対象ページ
●
今回は P-GO SEARCH を利用させてもらった
https://pmap.kuku.lu/
※特定サービスへのWebスクレイピングは自己責任でお願いします
下準備
(雑に)実装
●
MacOSX の open コマンドを最後に実行しているので、
このスクリプトは特定の環境でしか動きません
(雑に)実行
●
これで会社近辺にミニリュウが出現したら
ブラウザに該当ページが表示される!
雑ポイント (1)
●
API解析とかしない
– Ajaxな動的コンテンツをまるっと扱えるので楽
●
ターゲット(ミニリュウ)のチェックは該当
要素の存在可否をCSSでチェック
– has_css? メソッド
– CSSセレクタはDevTool...
雑ポイント (2)
●
通知=ブラウザでページ開く
– 「とりあえず気づければいいや」の精神
– 真面目にやるならば Slack 通知とか
●
定期実行=シェルスクリプト
– 「ソフトウェアを梃子として使う」の精神
今後の展望(あるならば、たぶんない)
●
実行の度にブラウザが起動してウザい
– ヘッドレスブラウザのドライバに切り替えよう
– Poltergeist など
●
通知や定期実行
– herokuなどで動かしてSlack通知とか出来ると
素敵で...
まとめ
●
雑にWebスクレイピングをしたい場合は Capybara を
オススメしたい
– Ajax な動的コンテンツを気にする必要なし
– CSSセレクタ、あとはページコンテキストでのJS実行
なども可能なので、慣れ親しんだ Web の技術...
免責
●
特定サービスの Web スクレイピングは
自己責任でお願いします
– この記事は Web スクレイピングを助長するもので
はありません
– あくまで問題解決の一手法としての Capybara
利用例の紹介でした
Capybaraで雑にWebスクレイピング
Upcoming SlideShare
Loading in …5
×

Capybaraで雑にWebスクレイピング

1,228 views

Published on

Capybaraで雑にWebスクレイピングをしようという話

Published in: Software
  • Be the first to comment

Capybaraで雑にWebスクレイピング

  1. 1. Capybaraで 雑にWebスクレイピング @kozy4324
  2. 2. 自己紹介 ● 中村 浩士 (なかむら こうじ) ● @kozy4324 (GitHub, Twitter)
  3. 3. ポケモンGO やってますか?
  4. 4. ありがちなユースケース ● ミニリュウかわいいよ、ミニリュウ! ● 会社近辺に出現したら 仕事をサボってでも 即座に捕まえに行かなければ! ● ポケモン探索サービス (e.g. PokeVison) を 定期的にチェックして出現したら通知したい
  5. 5. Capybaraとは? ● ブラウザテストのフレームワーク ● ブラウザ操作の内部DSLを提供してくれる ● ドライバを変更することでブラウザを 切り替えることが出来る – Selenium (WebDriver) – PhantomJS (ヘッドレスブラウザ) – etc...
  6. 6. これで問題解決を試みる!
  7. 7. 対象ページ ● 今回は P-GO SEARCH を利用させてもらった https://pmap.kuku.lu/ ※特定サービスへのWebスクレイピングは自己責任でお願いします
  8. 8. 下準備
  9. 9. (雑に)実装 ● MacOSX の open コマンドを最後に実行しているので、 このスクリプトは特定の環境でしか動きません
  10. 10. (雑に)実行 ● これで会社近辺にミニリュウが出現したら ブラウザに該当ページが表示される!
  11. 11. 雑ポイント (1) ● API解析とかしない – Ajaxな動的コンテンツをまるっと扱えるので楽 ● ターゲット(ミニリュウ)のチェックは該当 要素の存在可否をCSSでチェック – has_css? メソッド – CSSセレクタはDevToolsで抽出して調整すると楽
  12. 12. 雑ポイント (2) ● 通知=ブラウザでページ開く – 「とりあえず気づければいいや」の精神 – 真面目にやるならば Slack 通知とか ● 定期実行=シェルスクリプト – 「ソフトウェアを梃子として使う」の精神
  13. 13. 今後の展望(あるならば、たぶんない) ● 実行の度にブラウザが起動してウザい – ヘッドレスブラウザのドライバに切り替えよう – Poltergeist など ● 通知や定期実行 – herokuなどで動かしてSlack通知とか出来ると 素敵ですね ● Slack Bot とか – Ruboty とかで実装すると素敵ですね
  14. 14. まとめ ● 雑にWebスクレイピングをしたい場合は Capybara を オススメしたい – Ajax な動的コンテンツを気にする必要なし – CSSセレクタ、あとはページコンテキストでのJS実行 なども可能なので、慣れ親しんだ Web の技術でだいた いの問題が解決できる – ただし富豪的なアプローチではある ● 仕事中でもミニリュウを捕まえることが出来ますね – 実際はちゃんと真面目に働いてますよ!
  15. 15. 免責 ● 特定サービスの Web スクレイピングは 自己責任でお願いします – この記事は Web スクレイピングを助長するもので はありません – あくまで問題解決の一手法としての Capybara 利用例の紹介でした

×