【Selenium】自動で3.11と検索して復興支援(平和的利用)をする(悪用厳禁)
プロフィールにもある通り、RubyでSeleniumを使ってスクリーンスクレイピングをするのが趣味な自分。
Seleniumは通常テストツールとして広く知られていますが、スクレイピングツールとしてもバリバリ使えて特にJavaScriptゴリゴリサイトではMechanizeは使えないのでこれを使うしかありません。
普通にブラウザポチポチ作業でもSeleniumBuilderを使えばすぐにシンプルなRubyスクリプトが作れて、幸せすぎます。
幸せすぎて趣味として1年くらいずっとSeleniumに嵌ってしまい遊んできました。
そんな自分のためなのか、腕試し(笑)の機会がやってきたのです。
きっかけ
【きょう3月11日は、Yahoo! JAPANで「3.11」を検索】https://t.co/28Wnmq19Re 震災から5年。「3.11」を検索すると、おひとりにつき10円が復興支援のために寄付されます。#検索は応援になる pic.twitter.com/45cKHkm9VA
— Yahoo! JAPAN (@Yahoo_JAPAN_PR) 2016年3月10日
こういうのをSeleniumでやるとしあわせ...。
— ほつた@ASUS (@hotu_ta) 2016年3月10日
おっと良い子はやっちゃ駄目だぞ。https://t.co/TDmPjQYCkI
勢いでやってしまう
眠いけどSeleniumで3.11と検索するだけのコードをネタとしてGithubにでも上げるか
— ほつた@ASUS (@hotu_ta) 2016年3月10日
滅茶苦茶才能の無駄遣いをした感がやばい
— ほつた@ASUS (@hotu_ta) 2016年3月10日
hotuta/3.11-search: 3.11と検索して復興支援のために寄付するためのスクリプトhttps://t.co/dHREFoDi3l
平和的利用
— みゑふぃーゆ。 (@MieFy_LemonCake) 2016年3月10日
本当に才能の無駄遣いだしネタだよなこれ
— ほつた@ASUS (@hotu_ta) 2016年3月10日
オープンソース(MITライセンス)で公開
その後
同じことを考えた方が登場。
#検索は応援になる タグによると、 Yahoo!から3.11 って検索すると10円寄付されるとな。磨きあげたSelenium活用botの出番かな??
— kumagi2.0 (@kumagi) 2016年3月11日
こうですか!?わかりません! https://t.co/vKJUIIRlp6 #検索は応援になる
— kumagi2.0 (@kumagi) 2016年3月11日
→滅茶苦茶磨きがかかってて自分のコードが恥ずかしすぎる。
自分は3分でSeleniumBuilderを使って適当に作ったのにちゃんと失敗処理まで書かれてて自分のが恥ずかしすぎる...。https://t.co/rSOO2rXR9P
— ほつた@ASUS (@hotu_ta) 2016年3月11日
しかもマサカリを投げていただいてすぐにリポジトリを削除してしまおうかと思いました。
@kumagi ふむふむ。自分の場合でもwd.quitで一回ブラウザを終了させてもう一度初期化したchromeを立ち上げてcookieを消す仕様(?)になってるので問題無いはずです。やはり1IP1回限りでカウントするのかな...。https://t.co/rg58tUbngG
— ほつた@ASUS (@hotu_ta) 2016年3月11日
実行方法(かなり割愛)
自分のコードはRuby突っ込んでSeleniumを動くようにしてChromeDriver突っ込めば動きます。 kumagiさんは狐のままでもfirefoxをchromeと書き換えて上記のようにすれば動くはずです。
注意事項
あくまでもネタとして悪用厳禁でお願いします。
寄付について
・2016年3月11日0時00分から23時59分までに、「3.11」というキーワードで行われた検索が対象。この時間帯以外に行われた検索については寄付額算出に含まれておりません。
・「3月11日」「3,11」など、表記が異なるキーワードについては、原則として寄付額算出の対象となりません。
・検索者数はユニークブラウザー数で集計しています。
・寄付金の上限額は昨年実績を目安としています。昨年は合計2,918,278人(ユニークブラウザー数)が当日に「3.11」と検索し、29,182,780円を6団体に等分して寄付いたしました。
・最終的な寄付金額は3月14日に発表し、4月に、支援先として選定した10団体に等分して寄付させていただく予定です。
・寄付の完了後に、Yahoo!検索ガイドにて実施報告いたします。
→ふぁあああああああ
みんな去年より応援してるのに上限が去年とかないでしょorz
ユニークブラウザー数はIPアドレスユニークブラウザー数でカウントするのか気になりますね。
ちなみにcookieでカウントならちゃんとこれでカウントされます。
(ヤフオクとかログインしてない状態で更新するとカウントされる仕様とか色々と酷いのでおそらくIPアドレスでカウントしてこないでしょう。)
まとめ
Seleniumはポチポチ作業を自動化して時には世界に貢献をすることが出来る幸せなツールです。
本来はテストツールですがプログラミング初心者でもコピペで目に見えて動くSelenium(WebDriver)は感動そのものなので遊んでみてはいかがでしょうか。
自分のコードですが3分で作ってしまった結果、アンチパターンのsleepに頼りっぱなしで酷いです。
後で暇があれば書き換えておきたいです。
日本Seleniumユーザーコミュニティ
Seleniumの奥深い話まで気軽に聞けるコミュニティがあるのを見つけて加わり、本来はテストツールでテストとは何かテスト自動化の大切さを学んでいます。
おそらくスクレイピングに嵌っていなければテストについて全く知ることもなかったかもしれません。
日本SeleniumユーザーコミュニティのSlackでは活発にSeleniumについて語られているので興味のある方は是非参加しましょう。
以上、【Selenium】自動で3.11と検索して復興支援(平和的利用)をする(悪用厳禁)でした。