This (weather forecast on web -> Arduino -> some kind of display) is actually yet another thing on my list of things I'm going to do one day "when I get around to it" so I thought I'd pass on what I was thinking in case you find it useful.
I was planning to use an ethernet shield and get the Arduino to fetch the weather forecast data itself over the network. In preparation for this I looked at "scraping" the info off the BBC's horrible new weather forecast pages and transforming it on a server to a simpler string that the Arduino could read direct to offload the heavy duty processing. I discovered a PHP library called "simple_html_dom" that lets you parse and manipulate html and made a page on my server that returns the bare bones of the forecast.
The PHP on my webserver is as follows:
<?php
include_once('simple_html_dom.php');
// create HTML DOM
$html = file_get_html('http://news.bbc.co.uk/weather/forecast/2201?printco=Next12Hours&temp=centigrade');
$timeblocks = $html->find('div[class=times]', 0);
$timeblock = $timeblocks->find('div[class=time]');
foreach($timeblock as $block) {
echo trim($block->find('h3', 0)->plaintext); // time
echo " ";
echo trim($block->find('img', 0)->alt); // forecast
echo " ";
echo trim(str_replace("°", "." , $block->find('span[class=cent]', 0)->plaintext)); // temp
echo " -- ";
}
// clean up memory
$html->clear();
unset($html);
?>
and it turns the complicated HTML of the weather page into a string like this:
19:00 Sunny Intervals 13.C -- 22:00 Light Rain Shower 11.C -- 01:00 (Sat) Light Rain Shower 9.C -- 04:00 (Sat) White Cloud 7.C --
The Arduino could easily read that string and send it direct to an LCD or LED display, or you could say just use the forecast temperature and control one of those LED bargraph things you used to get on Hi-Fi's. Or make a retro display with an analogue gauge or two, maybe one for temperature and another one that points to sunny, cloudy, rainy etc. using servos.
Anyway, just some ideas I had before I got distracted by the next cool thing I was going to do...
Andrew