PythonでPixivのランギング情報を取得してSlackに投稿する話
前置き
いや大遅刻を噛ましてしまった…
この記事は「横浜医療情報専門学校 AdventCalendar2016」の――
――何日目だったかな。多分20日ぐらいだったと思うけどこれを書いてるのはクリスマス直前23日のセブイレブンで書いてます。
さて、「WebApi」について一年生向けにまとめようと思ったけど面白みがあまり無かったのでちょうどやってたPythonを用いたスクレイピングについて書こうかと。
Webスクレイピング初心者なので間違いあるかもあったら誰か指摘してくださいな。
遅刻したのはFallout4を買ったからではない。要出典いいね?
(買ったのは23日の夜だから…これの影響ではないはず…)
スクレイピングとは
クローラーとも言ったりする、早い話がプログラマブルにHTML(Webサイト)を取得して自分がほしい情報を取得することです。
身の回りに使われているものだとgoogle検索ですね。googleは定期的にクローラーを走らせて検索のとき出力する内容を予め取得していきます。
スクレイピングの注意事項
早い話グレーなところがあります。リクエスト間隔など礼儀を守らないとDOS攻撃と扱われますし、実際に特殊事例ですが逮捕者(Librahack事件)なども出てたりするのでマナーなど気にしましょう。
今回の目的
最近弊クラブのSlackに#illustというチャンネルができてPixivのかわわなイラストが連日要出典投稿されています。 そのなかみんなでかわいいイラストチャンネルに増やすために今回はPixivさんのランキング情報を定期的にslackに投稿したいと思います。
今回使うもの
・PhantomJS
ヘッドレス(画面出力がない)Webブラウです。
JavaScriptなども動くためHTMLを読み込んだ後JavaScript経由でAPIを叩いて動的に内容を変えるようなサイトでもちゃんと最終アウトプット状態のHTMLを取得することができます。
インストールはこれを参考にしました。
・Selenium
Webテスト自動化するツールです。HTML要素などを指定して取得することができます。
pip install selenium
でインストールします。
・Python
言わずもがなですね。
実際の実装
要素を指定するところはXPathという記述方法を用いましたなれると結構楽でした。
出力
まとめ
実際にできたのでこれで弊クラブのイラスト幸福度が上がるはず…
Pythonもスクレイピングもあまりやったことがない中も数時間で実装できて非常に簡単でした。
今後もいろいろやっていろんなおもしろBot作っていこうと思いますん。