« followerの情報をcsvに書き出すだけの簡単なお仕事です | トップページ | twitterのFavoritesをローカルにcsv形式で書き出すだけの簡単なお仕事です »

2007年10月 9日 (火)

followerの情報をcsvに書き出すだけの簡単なお仕事です-改

先日作成した、followerの情報をcsvに出力するRubyスクリプト 、twitterのレイアウト変更でちゃんと動かなくなってしまったので、手をいれてみました。

----
require 'rubygems'
require 'hpricot'
require 'net/http'
Net::HTTP.version_1_2

max_page = 20

account = 'account'
password = 'password'


printf("\"screen_name\",\"Name\",\"Location\",\"Web\",\"Bio\"\n")

i = 1
while i<max_page
  followers_path = '/followers?page='+i.to_s
  followers_req = Net::HTTP::Get.new(followers_path)
  followers_req.basic_auth account, password
  Net::HTTP.start('twitter.com'){|http|
    followers_body = http.request(followers_req).body
    followers_doc = Hpricot(followers_body)
    followers_doc.search('strong').each{|strong|
      printf("\"%s\"", strong.at('a').inner_text)
      next_row = 1
      user_path = '/'+strong.at('a').inner_text
      user_req = Net::HTTP::Get.new(user_path)
      user_req.basic_auth account, password
      user_body = http.request(user_req).body
      user_doc = Hpricot(user_body)
      user_doc.at('address').at('ul').search('li').each{|li|
        if li.search('span')[0].inner_text == "Name" then
          printf(",\"%s\"", li.search('span')[1].inner_text)
          next_row = 2
        end
        if li.search('span')[0].inner_text == "Location" then
          while next_row<2
            printf(",")
            next_row+=1
          end
          printf(",\"%s\"", li.search('span')[1].inner_text)
          next_row = 3
        end
        if li.search('span')[0].inner_text == "Web" then
          while next_row<3
            printf(",")
            next_row+=1
          end
          printf(",\"%s\"", li.at('a')['href'])
          next_row = 4
        end
        if li.search('span')[0].inner_text == "Bio" then
          while next_row<4
            printf(",")
            next_row+=1
          end
          printf(",\"%s\"", li.search('span')[1].inner_text)
        end
      }
      printf("\n")
    }
  }
  i+=1
end

----

htmlを取得してそれをパースしているため、あいかわらず時間がかかります。
さきほど僕のfollower 142人の情報を吐くのに、7分ほどかかりました。

LocationとかWebとかの記述がみつからない場合は、空列を出すようにしました。
また、各項目をダブルコーテーションで囲んで出力するようにしたので、中にカンマが入っていても、それなりのビューワでみればずれないでしょう。

|

« followerの情報をcsvに書き出すだけの簡単なお仕事です | トップページ | twitterのFavoritesをローカルにcsv形式で書き出すだけの簡単なお仕事です »

twitter」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/464804/8304404

この記事へのトラックバック一覧です: followerの情報をcsvに書き出すだけの簡単なお仕事です-改:

» span! 芸人 [吉本興業を中心としたお笑い芸人を語るブログ]
私は、お笑いが大好きです。唯一の趣味でしょう。だから、吉本興業のタレントや芸人には興味があります。特に、私が好きな芸人のブログや記事をあつめてみました。私の好きな芸人は、アームストロング、須藤理恵、明石家さんま、アジアン、アッハー小泉、アップダウン、あべ..... [続きを読む]

受信: 2007年10月12日 (金) 09時47分

« followerの情報をcsvに書き出すだけの簡単なお仕事です | トップページ | twitterのFavoritesをローカルにcsv形式で書き出すだけの簡単なお仕事です »