Skip to content

Instantly share code, notes, and snippets.

@vinbarnes
Created December 19, 2009 19:59
Show Gist options
  • Save vinbarnes/260225 to your computer and use it in GitHub Desktop.
Save vinbarnes/260225 to your computer and use it in GitHub Desktop.
#!/usr/bin/env ruby -w
=begin
cont: #HBHhourlyView
hour: #HBHhourlyView .textsmallbold
temp: .textsmall:nth-child(4)
desc: .textsmall:nth-child(5)
=end
require 'nokogiri'
require 'open-uri'
# puts 'start'
zipcode = '37204'
url = "http://www.accuweather.com/us/tn/nashville/#{zipcode}/forecast-hourly.asp?partner=40660"
doc = Nokogiri::HTML.parse(open(url)).css('#HBHhourlyView')
hours = doc.css('#HBHhourlyView .textsmallbold').map {|e| e.content }
# p hours
temps = doc.css('.textsmall:nth-child(4)').map {|e| e.content }
# p temps
descs = doc.css('.textsmall:nth-child(5)').map {|e| e.content }
# p descs
hour_format = "%6s"
temp_format = "%8s"
desc_format = "%7s"
rows = ['', '', '']
output = ''
hours.each_with_index do |hour, i|
temp, desc = temps[i], descs[i].split(' ').map {|e| (e =~ /(Mos|Par)tly/) ? e[0,1] : e}.join(' ')
rows[0] += "%-8s" % tmp = desc_format % hour
rows[1] += "%-8s" % tmp = desc_format % " #{temp} "
rows[2] += "%-8s" % tmp = desc_format % desc
end
puts
puts "Hourly Weather for #{zipcode} on #{Date.today.to_s}"
puts
puts rows.join("\n")
puts
# puts 'finish'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment