如何在使用ruby进行每次API调用后将结果保存到文件?

时间:2016-09-23 11:30:09

标签: ruby api twitter

我使用这个简短的ruby脚本来抓取twitter。问题是刮大账户需要花费大量时间,因为我还在测试它,我看不出它如何与大账户一起工作。例如,我让它运行了一整天,它没有保存任何东西,所以我需要在每次API调用之后保存结果,而不仅仅是在整个脚本完成之后。感谢任何可以帮助我的人,或者至少指出我正确的方向。这是代码:

def fetch_all_followers(twitter_username)
CSV.open("#{twitter_username}_friends_list.txt", 'w') do |csv|
@client.follower_ids(twitter_username).each_slice(5000).with_index do |slice, i|
  @client.users(slice).each_with_index do |f, j|
    csv << [i * 5000 + j + 1,f.screen_name]
    sleep 5
   end
  end
 end
end

fetch_all_followers("SOME_TWITTER_ACCOUNT")

1 个答案:

答案 0 :(得分:1)

经验法则:不要使用多余的第三方,它被称为“左撇子综合症”。

def fetch_all_followers(twitter_username)
  fname = "#{twitter_username}_friends_list.txt"
  @client.follower_ids(twitter_username)
         .each_slice(5000)
         .with_index do |slice, i|
    @client.users(slice)
           .each_with_index do |f, j|
              File.open(fname, "a+") do |file|
                file.write [i * 5000 + j + 1, f.screen_name, "\n"].join(',')
              end
      sleep 5
    end
  end
end

fetch_all_followers("SOME_TWITTER_ACCOUNT")