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.