コミュ障だから明日が僕らをよんだって返事もろくにしなかった

何かを創る人に憧れたからブログをはじめたんだと思うよ

雑スクレイピング in ルビー

スクレイピングって響きだけ聞くとすごく犯罪っぽいよね。スクレイピングやる人、スクレイパーですよ

はい、どうも僕です。今日はスクレイピングっていうエッチな響きのするテクニックに挑戦しちゃうぞ!スクレイピング*1ってなんなんでしょうね。それを確認すべく一行はアマゾン奥地へ向かうのであった。


ということで本日は雑にスクレイピングしたくなったのでやってみます。ここ最近はAPI経由で何かしら取得とかやってたけど、ルビーだともっと簡単に雑スクレイピングできるってのを知ったのでスクレイピングやることにした。

Mechanize
GitHub - sparklemotion/mechanize: Mechanize is a ruby library that makes automated web interaction easy.
そんなわけでこれ使います。これまでもRubyで何度かスクレイピングらしきことやってたけど、また新しい手段を見つけたので試してみる。

んで、導入してはみたもののWindowsだとエラーでてなんかダメぽだったので、下記リンクのように修正。
Sets a default pool size for Windows as Process::RLIMIT_NOFILE is not supported by jakauppila · Pull Request #90 · drbrain/net-http-persistent · GitHub



なんかつくった。

require 'mechanize'
agent = Mechanize.new
query = 'うんちぶりぶり'

getText = agent.get("https://twitter.com/search?l=ja&q=#{query}").search('p.js-tweet-text,.tweet-text').first.inner_text

puts getText

出力

C: *** > ruby scr.rb
朝ごはん

うんちぶりぶり

おいしいな

こんな感じにTwitter上から「うんちぶりぶり」を拾ってきてトップにあるメッセージを出力する何かができました。今までRubyで書いてきた謎スクレイピングの中で一番シンプルに書ける気がした。まあ、こんなことやっててもRubyを無料サポートしてるサーバーってあんまないんですよね……。どうしましょう。PHPで似たようなことできるようになった方がいいなこれ……。

*1:ウェブサイトから情報を抽出するコンピュータソフトウェア技術