スクレイピングって響きだけ聞くとすごく犯罪っぽいよね。スクレイピングやる人、スクレイパーですよ
はい、どうも僕です。今日はスクレイピングっていうエッチな響きのするテクニックに挑戦しちゃうぞ!スクレイピング*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:ウェブサイトから情報を抽出するコンピュータソフトウェア技術