スクレイピングに初挑戦したとき、検索上位にあがるサイトはどれも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のスクレイピング サイトを作りました。
コードも確認できるので参考になればと思います。