进入冬天天气严重变差,因此就需要关注本省的城市空气质量数据,发现其数据在本省的环境监测总站上可以直接公开获取,但没有提供一个总的文件连接,(可以方便入库、做图、分析),因此就使用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/ //' | 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/ //' | 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
其中最后一行的功能是去重。
发表回复