统计了一下 Ruby China 节点的主题数 (2012-05-21)。
瞎扯淡 节点的主题个数高居第 2 名:493 Rails 节点:760 Ruby 节点:337
瞎扯淡 是不是也太高了点?O_o (本帖也为 瞎扯淡 贡献了一票,但没计入在内)
#2 楼 @huacnlee 刚开始是用手工,觉得很傻 O_o 然后写了个脚本用 Watir 来做 (用 Nokogiri 也可以 )
先统计 node1 至 node49,然后按主题数排序,取出前 30 名的热门节点。 测试环境:Ruby 1.9.2p0, WinXP.
#encoding:utf-8
require "watir-webdriver"
def ruby_china_nodes_info
@browser = Watir::Browser.new
(1..49).inject([]) { |total,i| total << fetch_node_info(i)}
.sort_by{|_,topics| -topics }
.slice(0...30)
.tap { @browser.close }
end
def fetch_node_info(node_index)
@browser.goto "http://ruby-china.org/topics/node#{node_index}"
div = @browser.div(:id => 'node_info')
[
div.h2.text,
div.span(:class =>'total').text =~/(\d+)/ ? ($1.to_i):0
]
rescue
["Unkown node#{node_index}",0]
end
if __FILE__ == $0
# for win32 console
STDOUT.set_encoding "gbk"
nodes_info = ruby_china_nodes_info
nodes_info.each {|node,topics| puts "#{node}:#{topics}" }
end
最近一次统计
Rails:763 瞎扯淡:494 Ruby:337 分享:312 Gem:235 反馈:128 部署:123 工具控:109 社区开发:97 招聘:93 其他:54 公告:48 JavaScript:45 云服务:42 Ruby Tuesday:36 MongoDB:34 Testing:33 Git:31 开源项目:31 Linux:28 RVM:25 Mac:23 书籍:21 Database:19 产品控:17 CSS:15 Nginx:13 算法:12 Redis:10 搜索分词:9
多大点事,用 api 直接搞
JSON.parse(open("http://ruby-china.org/api/nodes.json").read).collect{|node|[node["name"], node["topics_count"]]}.sort_by{|t| t.last}
结果:
[["插画", 0], ["Erlang", 1], ["Android", 2], ["Go", 3], ["Python", 4], ["gzruby", 4], ["Objective-C", 4], ["Mailer", 5], ["Sinatra", 6], ["重构", 8], ["iPhone", 8], ["搜索分词", 9], ["Redis", 10], ["算法", 12], ["Nginx", 13], ["CSS", 15], ["产品控", 17], ["Database", 19], ["书籍", 21], ["Mac", 23], ["RVM", 25], ["Linux", 28], ["Git", 31], ["开源项目", 31], ["Testing", 33], ["MongoDB", 34], ["Ruby Tuesday", 36], ["云服务", 43], ["JavaScript", 45], ["公告", 48], ["其他", 54], ["招聘", 93], ["社区开发", 97], ["工具控", 109], ["部署", 123], ["反馈", 128], ["Gem", 235], ["分享", 312], ["Ruby", 338], ["瞎扯淡", 494], ["Rails", 763]]
curl + Ruby
curl http://ruby-china.org/api/nodes.json | ruby -rjson -e "p JSON(ARGF.read).map{|node|node.values_at('name','topics_count')}.sort_by(&:last)"
#5 楼 @qichunren 以前没查过 Ruby China 的 API, http://ruby-china.org/wiki/api 有了 API,那自然就省事多了 :) Thx!
@qichunren 学习了哈 这种方式确实更方便
1.9.3p194 :006 > require "json"
=> false
1.9.3p194 :007 > require "open-uri"
=> true
1.9.3p194 :008 > JSON.parse(open("http://ruby-china.org/api/nodes.json").read).collect{|node|[node["name"], node["topics_count"]]}.sort_by{|t| t.last}
=> [["RubyConfChina", 0], ["插画", 0], ["Erlang", 1], ["Android", 2], ["Go", 3], ["GZRuby", 4], ["Objective-C", 4], ["Python", 4], ["Mailer", 5], ["Sinatra", 6], ["重构", 8], ["搜索分词", 9], ["Redis", 10], ["iPhone", 10], ["算法", 12], ["Nginx", 13], ["CSS", 15], ["产品控", 17], ["Database", 19], ["书籍", 21], ["Mac", 23], ["RVM", 25], ["Linux", 28], ["开源项目", 33], ["Testing", 33], ["Git", 33], ["MongoDB", 35], ["Ruby Tuesday", 37], ["云服务", 44], ["JavaScript", 45], ["公告", 48], ["其他", 54], ["招聘", 96], ["社区开发", 98], ["工具控", 111], ["部署", 123], ["反馈", 129], ["Gem", 239], ["分享", 315], ["Ruby", 343], ["瞎扯淡", 495], ["Rails", 775]]