Ruby域名评分系统v1
域名投资被称为21世纪的“信息房地产”,不时听到***域名买到几百万。域名谐音“玉米”,因此域名商也被称“米农”。据说很多个人米农都是开奔驰宝马谈生意的。我也梦想能有那么一天。
如果坐在沙发上想玉米,估计能想到的好米都被注册完了。
其实域名注册是有很多技巧的,国际域名组织每天都会删除一些过期域名,如果能在这里沙里淘金,一定能事半功倍。
所以写了这个程序从网上抓取今天删除的域名并对域名进行评分,指导投资。
好了直接上代码:
# coding: gb2312 require "nokogiri" require "open-uri" class DomainSpider #这里可以查到今天删除的国际域名 @@today_domain_url = "http://domain.webmasterhome.cn/todayDel_domain.asp" # 返回域名数组 def get_list doc = Nokogiri::HTML(open(@@today_domain_url)) doc = doc.xpath("/html/body/div/table")[3] doc = doc.css("tr td.mainr pre")[0] title = doc.css("strong")[0].content domain_list = doc.content.gsub!(title, "") domain_list.split("\r\n").collect { |domain_url| Domain.new domain_url } end end #域名对象 class Domain #对于rubyer.me,则suffix=rubyer, prefix=me, url=rubyer.me attr_reader :suffix, :prefix, :url def initialize domain_url a = domain_url.split(".", 2) @url = domain_url @prefix = a[0] @suffix = a[1] if a.size<2 || @suffix.size == 0 || @prefix.size == 0 raise "domain url format is wrong! #{domain_url}" end end end #域名计分器 class DomainScorer def self::score_of domain # 计分分3部分,每部分100分,共300分 # 1、长度,越短越好1-4位100分,5-10减到0 # 2、后缀,com的能卖100元 cn的能卖30就不错了 net的能卖50左右 org的40左右! # 3、组合,纯字母+40,纯数字+30,有1-3个元音字母+20,出现1-3相同字母+20,因为这些出现太多反而感觉山寨 s = 0 # 计算长度分 case domain.prefix.size when 1..4 s += 100 when 5 s += 80 when 6 s += 60 when 7 s += 40 when 8 s+= 20 when 9 s += 20 end # 计算后缀分 s += 100 if domain.suffix == "com" s += 50 if domain.suffix == "net" s += 40 if domain.suffix == "org" s += 30 if domain.suffix == "cn" # 计算组合分 s += 40 if domain.prefix =~ /^[1-9]\d*$/ s += 30 if domain.prefix =~ /^[a-z]+[a-z]$/ s += 20 if (1..3).cover? domain.prefix.size - domain.prefix.gsub(/a|e|i|o|u/, "").size f = [] domain.prefix.chars.collect { |c| f << c unless f.include? c } ts = domain.prefix.size - f.size s += 20 if (1..3).cover? ts s end end spider = DomainSpider.new domains = spider.get_list #域名数组按分数倒序排列 domains.sort! { |a, b| DomainScorer.score_of(b) <=> DomainScorer.score_of(a) } #把结果写到domains.txt中 f = File.new("../domains.txt", "a+:UTF-8") f.puts "-----------start at #{Time.now}--------------" domains.each { |domain| f.puts "#{DomainScorer.score_of domain}:#{domain.url}" } f.puts "-----------end at #{Time.now}--------------" f.close
代码执行后会在当前路径生成domains.txt,里面有域名分数和域名。
得到单个域名分数:
puts DomainScorer.score_of(Domain.new("rubyer.me"))
代码比较简单,难点是打分规则设计。如现在双拼米被炒的很热,很多百万起价,也要参与加分。
姑且把这叫做v1吧,以后有时间再写更新。
如果你对域名投资有经验,也欢迎交流指导:)
My problem was a wall until I read this, then I smahsed it.