Linux开发环境及应用作业1
作业要求
从因特网上搜索相关Web网页,处理网页html
数据,从中提取出当前时间点北京各监测站的 PM2.5浓度,输出格式如下。要求:写出各个处 理步骤,并给出解释。
2018-03-15 13:00:00,海淀区万柳,73
2018-03-15 13:00:00,昌平镇,67
2018-03-15 13:00:00,奥体中心,66
2018-03-15 14:00:00,海淀区万柳,73
2018-03-15 14:00:00,昌平镇,73
2018-03-15 14:00:00,奥体中心,75
实验过程
数据搜集
北京各监测站的PM2.5
指数的数据来源网站:http://www.86pm25.com/city/beijing.html
数据整理及汇总
先展示实现该操作的指令和最后的结果:
下面详细解释指令:
- 首先利用
标签把数据分成单独的行, sed -e 's/<tr/\n<tr/g'
- 其次删掉html文件中的所有标签
-e 's/<[^<>]*>/ /g
,把所有标签都换成了空格。- 我先在html文件中寻找日期和时间,发现时间的那一行有“更新”的字样,于是建立awk文件,此时发现“更新”后面中文的冒号紧跟着日期,没发把日期分离开,于是先在中文冒号后面添加空格。顺便把日期和时间的格式改成标准的输出的格式。
-e 's/:/: /g' -e 's/[年月]/-/g' -e 's/日//g -e 's/时/:00:00/g'
- 此时可以把时间和日期抽离出来了。在建立的awk文件中输入
/更新/ {data = $2; time = $3}
- 得到日期和时间 之后,我们去找监测站和pm2.5指数,发现在这些数据最后都有$m^3$单位在,于是在awk文件中添加
/m3/{printf("%s %s,%s,%s\n",date, time, $1, $3);}
- 最后把单位删掉,并输出到csv文件中即可。
awk -f flow.awk | sed -e 's/[ug/m3]//g' > flow.csv
- 其次删掉html文件中的所有标签