#!/usr/bin/perl -w use strict; use URI; use Web::Scraper; my $cities = scraper { process "td > a", city => 'TEXT'; process "td.alignright", temperature => 'TEXT'; process "td.alignright + td", comments => 'TEXT'; }; my $bom = scraper { process "#pad tr", 'cities[]' => $cities; result 'cities'; }; my $res = $bom->scrape( URI->new("http://www.bom.gov.au") ); die "god bless america\n" unless ref $res eq "ARRAY"; print "Tomorrow's forecast:\n\n"; # we need a way to distinguish tomorrow's forecast and today's... # tomorrow's temperatures come first, and these are all we want, # so we reverse and uniq. hack hack my %tmp; for (reverse @$res) { next unless $_->{city}; $_->{temperature} =~ s/\D//g; $tmp{$_->{city}} = { temperature => $_->{temperature}, comments => $_->{comments} }; } for (sort keys %tmp) { print $_, " " x (18-length), $tmp{$_}->{temperature}, " " x (18-length($tmp{$_}->{temperatu +re})), $tmp{$_}->{comments}, "\n"; }
In reply to Australian weather with Web::Scraper by missingthepoint
For: | Use: | ||
& | & | ||
< | < | ||
> | > | ||
[ | [ | ||
] | ] |