Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.
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スクレイピング
Prochain SlideShare
Chargement dans…5
×

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

1 248 vues

Publié le

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

Publié dans : Logiciels
  • Soyez le premier à commenter

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 利用例の紹介でした

×