followerの情報をcsvに書き出すだけの簡単なお仕事です
Rubyを使って、followerの情報をcsvに出力するスクリプトを書いてみました。
--------
require 'rubygems'
require 'hpricot'
require 'net/http'
Net::HTTP.version_1_2
max_page = 20
account = 'account
password = 'password
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)
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.inner_text =~ /^Name/ then
printf("%s,", li.at('span').inner_text)
end
if li.inner_text =~ /^Bio/ then
printf("%s,", li.at('span').inner_text)
end
if li.inner_text =~ /^Location/ then
printf("%s,", li.at('span').inner_text)
end
if li.inner_text =~ /^Web/ then
printf("%s,", li.at('a')['href'])
end
if li.inner_text =~ /^Joined/ then
printf("%s", li.inner_text)
end
}
printf("\n")
}
}
i+=1
end
--------
最初はtwitter API経由で取得しようとしたのですが、
- APIではfollowerが100人しか取得できない
- APIは60分間に70回という制限がある
という、二つの理由から、
htmlを取得してそれをパースするようにしました。
そのため、すさまじく時間がかかります。
人によってはBioとかLocationとかWebの項目がない人がいたりとかしますし、
inner_textの中にカンマが含まれていた場合にどうにかする処理をいれた方がいいような気もします。
| 固定リンク
「twitter」カテゴリの記事
- ふぁぼカウンター(2009.06.28)
- あの人にふぁぼられたい!(2009.06.21)
- 台北でもカレーは幸福!(2008.12.13)
- twitterのFavoritesをローカルにcsv形式で書き出すスクリプト-改(2008.06.29)
- 日本の救助隊はこのように行動した (2008.05.19)


コメント