使用Linux中的shell获取天气一开始觉得很困难,后来发现真的很简单,个位数的代码就搞定了。1获取对应城市天气所有天气信息均从中国天气网获取。每个城市都会对应一个id(比如北京是101010100,因为我在银川,所以例子中使用的是银川的id:101170101),通过id可以获取实时天气或者全-对应城市的一天天气,还可以获取七天天气。1.1shell脚本shell脚本代码如下:#!/bin/shweatherDateRoot=http://www.weather.com.cn/data/sk/101170101.htmlweatherweatherDataFile=weather.htmlwget$weatherDateRoot-O$weatherDataFile>/dev/null2>&1sed's/.*temp":"\([0-9]\{1,2\}\).*/\1/g'$weatherDataFile该脚本获取天气信息,然后进行匹配通过定期到当前温度。如果只用这个脚本,不做二次加工,就太麻烦了。我获取到天气信息后,显示在终端命令提示符中,所以需要进行处理。2.天气显示在终端命令提示符中。首先获取对应城市的天气。比如银川对应的实时天气信息在:http://www.weather.com.cn/data/sk/101170101.html你先在中国天气网上搜索你所在城市的天气want,URL中会包含城市的天气id,将上面URL中的id替换为你所在城市的id即可获取。还有全天的天气信息:http://www.weather.com.cn/data/cityinfo/101170101.html不知中国天气网有没有提供七天的天气信息?如果有,那么我们也可以通过这个方法获取七天的天气信息。2.1获取天气信息对应的shell脚本:#!/bin/shallDataUrl=http://www.weather.com.cn/data/cityinfo/101170101.htmlallDataFile=/home/snowsolf/shell/weather/allDay。htmldataUrl=http://www.weather.com.cn/data/sk/101170101.htmldataFile=/home/snowsolf/shell/weather/weather.htmlwget$dataUrl-O$dataFile>/dev/null2>&1wget$allDataUrl-O$allDataFile>/dev/null2>&12.2定时获取通过crontab命令设置定时任务,执行crontab-e命令(如果第一次需要设置默认编辑器),然后在文件末尾添加:*/30****/home/snowsolf/shell/weather/weather.sh>>/dev/null这行代码设置为每隔30分钟执行一次获取天气的脚本.具体crontab命令的其他语法可以google或者baidu。2.3提取天气sed's/.*temp":"\([0-9]\{1,2\}\).*/\1/g'这个命令可以从得到的实时天气中得到实时天气文件。2.4在终端命令提示符中显示可以参考http://www.cnblogs.com/snowsolf/p/3192224.html。在这里你可以让你的命令提示符更漂亮。***我的命令提示符的最后一张照片:太棒了!!!做一个折腾的程序员真好!原文链接:http://www.cnblogs.com/snowsolf/p/shell_get_weather.html
