Linux-shell获取天气

发表于:2014-9-16 10:12

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:snowsolf    来源:51Testing软件测试网采编

  用Linux中的shell获取天气,本来觉的比较难,原来,真简单,个位数的代码就搞定。
  1获取对应城市天气
  所有天气信息都从中国天气网获取。每一个城市多会对应一个id(比如,北京为101010100,因为本人在银川,所以例子中就用银川的id:101170101),通过id就可以获取对应城市实时天气或者全天天气,还可以获取七天天气。
  1.1shell脚本
  shell脚本代码如下:
#!/bin/sh
weatherDateRoot=http://www.weather.com.cn/data/sk/101170101.html
weatherDataFile=weather.html
wget $weatherDateRoot -O $weatherDataFile > /dev/null 2>&1
sed 's/.*temp":"\([0-9]\{1,2\}\).*/\1/g' $weatherDataFile
  此脚本通过将天气信息获取,然后通过正则匹配到当前温度。
  如果你只用这个脚本,不再进行二次处理,那也太麻烦。我获取天气信息后是显示到终端命令提示符中的,所以需要还要在做处理。
  2终端命令提示符中显示天气
  首先获取对应城市天气,如银川对应的实时天气信息在:
  http://www.weather.com.cn/data/sk/101170101.html
  你先在中国天气网搜索到你想要的城市的天气,网址中会包含城市天气id,将上面的网址中的id替换成你城市的id就可以获取。
  还有全天天气信息:
  http://www.weather.com.cn/data/cityinfo/101170101.html
  不知道中国天气网提供七天天气信息没有?如果有,那么我们也可以通过此方法获取七天天气信息。
  2.1获取天气信息
  对应shell脚本:
#!/bin/sh
allDataUrl=http://www.weather.com.cn/data/cityinfo/101170101.html
allDataFile=/home/snowsolf/shell/weather/allDay.html
dataUrl=http://www.weather.com.cn/data/sk/101170101.html
dataFile=/home/snowsolf/shell/weather/weather.html
wget $dataUrl -O $dataFile > /dev/null 2>&1
wget $allDataUrl -O $allDataFile > /dev/null 2>&1
  2.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。这里可以让你的命令提示符更绚丽。
  最后上一幅我的命令提示符图:
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号