LoginSignup
6
7

More than 3 years have passed since last update.

【Rails】mechanizeを使えばrailsスクレイピングが余裕な件

Last updated at Posted at 2020-02-07

スクレイピングに初挑戦したとき、検索上位にあがるサイトはどれもnokogiriを使用するのですが、dockerだとうまく利用できず四苦八苦していました。

その中で見つけたのがmechanizeというgemです。

自分用メモのためにも今回はコードを書いときたいと思います。

前提

railsアプリは作成済み
gem mechanize インストール済み

Controller

controllerでは.getメソッドとsearchメソッドを使ってページ情報を取得します。

def home

  agent = Mechanize.new

  page = agent.get("https://nemlog.nem.social/")

  @elements= page.search('.visit-w')

end

あとはインスタンス変数@elementsを利用してviewに表示するだけです。

View

<%@elements.each do|element|%>
  <ul>
    <li>
      <%=link_to(element.inner_text,element[:href])%>
    </li>
  </ul>
<%end%>

.inner_textはテキスト部分だけ抜き出してくれます。
また、element[:href]は指定したhtml(この場合はclass=visit-w)の属性を抜き出します。

まとめ

結論、mechanizeは神ですね。
スクレイピングをお手軽に試してみたい人はぜひ使ってみてください。

おまけ

これを利用して簡単なnemlolgのスクレイピング サイトを作りました。
コードも確認できるので参考になればと思います。

github↓
https://github.com/soehina/searchnemlog

6
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
7