我使用这个简短的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")
答案 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")