ruby_根据身份证号获取籍贯的代码

根据身份证获取籍贯的代码

require 'httpclient'
require 'hpricot'
require 'mechanize'
require 'roo'

class String
  def gsub_html
    self.gsub(/r|t|n/,"").gsub(/<(S*?)[^>]*>.*?|<.*? />/,"").gsub("&nbsp;","")
  end
 end

def get_id(id_num)
    link = "http://idcard.911cha.com/"
    client = HTTPClient.new
    params ={"q"=>id_num.to_s}
    doc = Hpricot(client.post(link,params).body.encode("utf-8"))
    res =  doc.search("p[@class=l200]").to_s.gsub_html
    puts res.split(":")[1]
    puts sheng = res.split(":")[1].split[0]
    if res.split(":")[1].split[1].match("生")
        shi = res.split(":")[1].split[1].split("生")[0]
    elsif res.split(":")[1].split[1].match("地区")
        shi = res.split(":")[1].split[1].split("地")[0] + "市"
    else
        shi = res.split(":")[1].split[1]
    end
    puts (sheng+shi).strip
    # puts qu = res.split(":")[1].split[2].split("生")[0]
    # puts  birth = res.split(":")[2].split("(")[0]
    # puts age = res.split(":")[2].split("(")[1]

end

# get_id("420106192403254816")
# puts "--------------------------------------"
# get_id("422825199406110624")
# puts "-------------------------------------------"
# get_id("429005199204163944")
# puts "------------------------------------------"
# get_id("500234199107059605")
# puts "------------------------------------------"
# get_id("522501199204187355")

def get_id_1(id_num)
    link = "http://www.3181.net/sfz/sfz.asp?"
    client = HTTPClient.new
    params ={"xian"=>id_num.to_s}
    doc = Hpricot(client.post(link,params).body.force_encoding("gbk").encode("utf-8"))
    # puts id_n = doc.search("div#result").search("b")[0].to_s.gsub_html
    # puts sex = doc.search("div#result").search("b")[1].to_s.gsub_html
    # puts age = doc.search("div#result").search("b")[2].to_s.gsub_html
    puts addr = doc.search("div#result").search("b")[3].to_s.gsub_html
    return addr
end

# get_id_1("339005199110256216")
# puts "-----------------------------------"
# get_id_1("500234199107059605")
# puts "-----------------------------------"
# get_id_1("652923198912211429")

def get_id_2(id_num)
    id_hash={}
    xlsx = Roo::Spreadsheet.open('id.xlsx')
    xlsx.each_row_streaming(pad_cells:true) do |row|
      id_hash[row[0].to_s]=row[4]
    end
    puts id_hash[id_num[0..5]]
end

get_id_2("652923198912211429")