mechanizeを用いた、スクレイピングの検証
スクレイピングするなら、「mechanize」を使用するといいよ!
って記事を見かけたので、試しに使ってみることにした。
でも、mechanize だけだとどうにも、スクレイピングしにくい、、、
nokogiri と組み合わせたらいいんじゃない?
ってことで、二つ組み合わせてのスクレイピングを行うことにした。
あとは勉強がてらにGemを作ってみた。
railsの開発とかはやったことあるけど、Gem作成の経験はなかったしね。
bundlerでGemのひな形が作れるなんて、、、知らなかった。
しかもコマンドは以下の一文、チョー簡単!
bundle gem hoge -t
- t はオプションでテストケースを作成するっていうものらしい。
テストはrspecが採用されてた。
Gitをインストールしておかないとbundleがこけるので注意(実際こけて原因探すのに時間が掛かった、、、)
取りあえずやりたいこと
- 認証のあるページのスクレイピング
- 「国内株の保有銘柄」の一覧取得
- 特定口座、NISA口座等で情報を別々に取得(普通口座で買うことないのでサンプルが無い!?)
ってな感じを実現してみることに
gemのそれぞれの役割としては、
「mechanize」
- ログイン処理を行いログイン後のページ情報を取得
「nokogiri」
ってな感じかな?ログイン処理は以下で実装出来る。
ちまちま書かないといけないのかと思うと少し億劫。
html = agent.get(@url) response = html.form_with(name: 'loginform') do |form| form.field_with(name: 'loginid').value = @user_id form.field_with(name: 'passwd').value = @user_pwd form.field_with(name: 'homeid').value = @homeid end.submit.content
あとはこのresponseをnokogiriに食わせると操作しやすくなって便利ー!
まあ、、、普通にURLにアクセスしてページ取ってきたのをnokogiriに食わせるのとなんら変わらない感じです。
また、Gemの動作確認も簡単で、「hoge」でGemを作成した場合
「hoge/bin/」に移動後「ruby console」を実行するとirbがGemをrequireした状態で起動する。
あとはirb上で動作確認すればOK。
便利だねー、、、
Rubyによるクローラー開発技法 巡回・解析機能の実装と21の運用例
- 作者: るびきち
- 出版社/メーカー: SBクリエイティブ
- 発売日: 2015/03/02
- メディア: Kindle版
- この商品を含むブログ (1件) を見る