文章17
标签2
分类9

上机作业:正则表达式

实验内容

从因特网上搜索相关Web网页,处理网页html数据,从中提取出当前时间点北京各监测站的PM2.5浓度,输出格式如下。要求:写出各个处理步骤,并给出解释。

2020-03-09 13:00:00,海淀区万柳,73

2020-03-09 13:00:00,昌平镇,67

2020-03-09 13:00:00,奥体中心,66

2020-03-09 13:00:00,海淀区万柳,73

2020-03-09 13:00:00,昌平镇,73

2020-03-09 13:00:00,奥体中心,75

实验步骤

下载相关数据

wget http://www.86pm25.com/city/beijing.html

查看下载的数据

由于使用的是vs code的ssh remote,所以可以直接用vs code查看html文件

image-20220403161912751

发现需要的数据,含有<td><img src =,尝试用这段内容进行查找。

grep "<td><img" beijing.html

image-20220403163439771

发现初步筛选完成。

删去html格式

将尖括号以及中间的内容替换成空格,得到如下结果

cat beijing.html | grep '<td><img' | sed -e 's/<[^<>]*>/ /g'

image-20220403210912510

添加时间

发现时间行为 更新:2022年04月03日 15时

添加到grep筛选指令中

image-20220403210935439

输出时间到每一行

常见一个1.awk文件,文件内容如下

/更新/ 
{
    date = $2;
    time = $3;
}
/m³/
{
    printf "%s %s,%s,%s\n",date,time,$1,$2
}

然后执行

cat beijing.html | grep -E '<td><img|更新' | sed -e 's/<[^<>]*>/ /g' -e 's/更新:/更新 /g' |awk -f 1.awk

image-20220403211828522

将时间修改成要求的格式

cat beijing.html | grep -E '<td><img|更新' | sed -e 's/<[^<>]*>/ /g' -e 's/更新:/更新 /g' |awk -f 1.awk |sed -e 's/年/-/g' -e 's/月/-/g' -e 's/日//g' -e 's/时/:00:00/g'

image-20220403211916114

输出到文件夹中

cat beijing.html | grep -E '<td><img|更新' | sed -e 's/<[^<>]*>/ /g' -e 's/更新:/更新 /g' |awk -f 1.awk |sed -e 's/年/-/g' -e 's/月/-/g' -e 's/日//g' -e 's/时/:00:00/g'>1.txt

image-20220403212046786

本文作者:admin
本文链接:https://blog.banned.top/archives/37/
版权声明:本文采用 CC BY-NC-SA 3.0 CN 协议进行许可

0 评论

'