I used one of the CPAN weather grabbers with mixed results.
Often the ports would time out when I used the module as written.
My solution was to dupe the .pm and localize it to pull only from the Los Angeles NOAA station instead of the central/national one. This one had a lot less traffic, and I haven't seen any lost results since I made the switch.
In case anyone is interested, I modified Geo::WeatherNOAA as Geo::LAWeatherNOAA.
In the subroutine get_city_zone I changed my $URL = $URL_BASE . lc $state . '/zone.html'; to my $URL = 'http://www.nwsla.noaa.gov/zones/LAXZFPLOX'; and that took care of just about everything.