-
-
Save shizm/1014177 to your computer and use it in GitHub Desktop.
クロネコヤマトの荷物追跡ページをパースして最新の状況を表示します
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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