Ruby域名评分系统v1

八 31st, 2011

域名投资被称为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吧,以后有时间再写更新。
如果你对域名投资有经验,也欢迎交流指导:)

>>原创文章,欢迎转载。转载请注明:转载自Ruby迷,谢谢!
>>原文链接地址:Ruby域名评分系统v1
  1. Kailin
    十一 11th, 201109:04

    My problem was a wall until I read this, then I smahsed it.