Skip to content

Instantly share code, notes, and snippets.

@shizm
Forked from halka/pussy_track.rb
Created June 8, 2011 10:32
Show Gist options
  • Save shizm/1014177 to your computer and use it in GitHub Desktop.
Save shizm/1014177 to your computer and use it in GitHub Desktop.
クロネコヤマトの荷物追跡ページをパースして最新の状況を表示します
require 'rubygems'
require 'active_support'
require 'mechanize'
require 'date'
require 'kconv'
# 配送状況取得
#
# クロネコヤマトの荷物お問い合わせシステム
# http://toi.kuronekoyamato.co.jp/cgi-bin/tneko
# に引数で渡された伝票番号を入力して問合せを行い、結果を返す
def search(slip_numbers)
results = []
agent = Mechanize.new
agent.user_agent_alias = 'Mac Safari'
slip_numbers.each_slice(10) do |numbers|
page = agent.get('http://toi.kuronekoyamato.co.jp/cgi-bin/tneko')
search_form = page.forms.first
numbers.each_with_index do |number, index|
search_form["number#{"%02d" % (index + 1)}"] = number
end
res = agent.submit(search_form)
ichiran = res.root.search('table.ichiran')
numbers.length.times do |i|
td_elements = ichiran.search('tr')[i*2 + 1].search('td')
# 伝票番号
slip_number = td_elements[2].content.strip
# 日付
date_str = td_elements[3].content.strip
date = date_str.blank? ? "" : Date.parse(date_str)
# 最新ステータス
status = td_elements[4].content.strip
results << {:slip_number => slip_number, :date => date, :status => status}
end
end
return results
end
#問合せ伝票番号
numbers = ["xxxx-xxxx-xxxx", "yyyy-yyyy-yyyy", "zzzz-zzzz-zzzz"]
search(numbers).each_with_index do |res, idx|
puts "#{idx+1}件目:#{res[:slip_number]} #{res[:status]} #{res[:date]}"
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment