用shell脚本自动提取甘肃省城市空气质量数据

进入冬天天气严重变差,因此就需要关注本省的城市空气质量数据,发现其数据在本省的环境监测总站上可以直接公开获取,但没有提供一个总的文件连接,(可以方便入库、做图、分析),因此就使用shell脚本提取了一个发布到数据中心:http://westdc.westgis.ac.cn/data/2a7224fe-05f3-4e8c-bf7e-325c93668caf

处理过程分两步走,首先要将所有的历史数据下载下来并合成到一个文件中,其次要能每日跟踪网站的数据更新。

1. 获取历史数据

#!/bin/bash
for ((i=17;i>0;i--))
do
   wget -O t1.html "http://www.ghjczxz.cn/Web/ReportMain.asp?CurPage=$i&SType=1&ETime=&STime=&ADsName="
   iconv -f gb2312 -t utf8 t1.html > t.html
   awk '/监测日期/,/table/' t.html | sed -e 's/<[^<]*.[>$]//g;/<!--/d' | sed -e 's/&nbsp;//' | sed -e 's/监测日期//' | sed 's/^[[:space:]]*//g' | sed '/^$/d' | awk '{if (NR%5==0){print $0} else {printf"%s ",$0}}' | sed 's/\r//g' >> gansu_air_quality.txt
 done

对此script的简单说明,主要是对第6行的说明:

1. 提取包含数据的html内容
2. 移除html标签内容
3. 移除html空格
4. 移除监测日期字符
5. 移除空格
6. 合并5行为1行

2. 定时cron更新数据
数据收取下来后可以每天定时检查是否有更新,脚本如下:

#!/bin/bash
wget -O t1.html "http://www.ghjczxz.cn/Web/ReportMain.asp?CurPage=1&SType=1&ETime=&STime=&ADsName="
iconv -f gb2312 -t utf8 t1.html > t.html
awk '/监测日期/,/table/' t.html | sed -e 's/<[^<]*.[>$]//g;/<!--/d' | sed -e 's/&nbsp;//' | sed -e 's/监测日期//' | sed 's/^[[:space:]]*//g' | sed '/^$/d' | awk '{if (NR%5==0){print $0} else {printf"%s ",$0}}' | sed 's/\r//g' >> gansu_air_quality.txt.1
awk '!a[$0]++' gansu_air_quality.txt.1 > gansu_air_quality.txt

其中最后一行的功能是去重。


已发布

分类

来自

标签:

评论

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注