rubyでtwitterAPIを使わずにエゴサーチする
こにちは。
Ruby継続しております。
題名の通りRubyでエゴサーチするわけなのですが、
トークンとかめんどくせえな、と思いまして
HTMLをGetしてオレオレパースするというコードを書きました。Ruby1.9.2です。
searchWordに探したい文言を入れ実行すると最近の20件が表示される、
という仕様です。日本語対応です。
twitter_ego_search.rb
# coding : utf-8 require 'net/http' require 'uri' searchWord = 'hello' FullNameRegexp = %r|<strong class="fullname js-action-profile-name show-popup-with-id">(.*?)</strong>| UserNameRegexp = %r|<span class="username js-action-profile-name"><s>@</s><b>(.*?)</b></span>| TweetRegexp = %r|<p class="js-tweet-text tweet-text">(.*?)</p>| def removeHtmlTag(str) str = str.gsub(%r|<\/?strong>|, '') str = str.gsub(%r|<a href.*?<b>(.*?)</b></a>|, '@\1') str = str.gsub(%r|<a href="http[^>]*?>(.*?)</a>|, '\1') str = str.gsub(%r|<span class=[^>]*?>|, '').gsub(%r|</span>|, '') str = str.gsub(%r|<img class="twitter-emoji" src="(.*?)"[^>]*?>|, '') # str = str.gsub(%r|<img .*?src="(.*?)"[^>]*?>|, '\1') str = str.gsub(%r|pic.twitter.com/|, 'https://pic.twitter.com/') return str end def removeRefChar(str) str = str.gsub(%r| |, ' ') str = str.gsub(%r| |, ' ') return str end Net::HTTP.version_1_2 url = URI.parse(URI.encode('https://twitter.com/search?q=' + searchWord + '&src=typd')) Net::HTTP.get(url).each_line {|h| if h =~ FullNameRegexp print($1) end if h =~ UserNameRegexp print('(@' + $1 + ') ') end if h =~ TweetRegexp _tweet = $1 _tweet = removeHtmlTag(_tweet) _tweet = removeRefChar(_tweet) print(_tweet + "\n") end }
もうちょっと手直しする予定・・ですが、
GitHubにあげたことないのでやってみたいと思ってます。
こんなクソコードあげても大丈夫なんかな~