上周末看新闻,发现宁波设置了五个空气质量观测点,每小时公布一次实时观测数据,发布在
好不容易找到这个发布的网页,觉得查起来实在是费劲,于是自己花了两天时间,试试能不能自动抓取网页数据,并且发布到新浪微博上。
脚本如下
-
#!/bin/bash
-
#FileName: sinaweibo.sh
-
#Author: Personball
-
#Date: 2012 Aug 24 10:30:44 PM
-
-
#Get PM Info
-
Value=""
-
content=`date +%T`
-
content=$content">"
-
while read Name id
-
do
-
r_num=`echo "0.${RANDOM}${RANDOM}${RANDOM}"`
-
if [ ${#r_num} -gt 18 ]
-
then
-
r_num=${r_num:0:18}
-
fi
-
while [ ${#r_num} -lt 18 ]
-
do
-
r_num=$r_num"0"
-
done
-
curl "" >/tmp/pm_index 2>/dev/null
-
Value=`grep "lab_con_pm10" /tmp/pm_index|grep -oP "\d.\d+(?=[<]/font[>])"`
-
content=$content"$Name:$Value;"
-
done
-
content=$content"(单位:毫克/立方米)"
-
#Send a weibo
-
curl -u 【微博帐号】:【微博密码】 -d "source=【新浪微博应用AppKey】&status=$content" &>/dev/null
-
-
exit 0
其中URL文件内容如下:
-
太古小学 1
-
市环境监测中心 2
-
三江中学 4
-
龙赛医院 5
-
北仑监测站 7
一开始比较麻烦的地方就在于需要注册新浪开放平台的应用开发者,不过创建应用获得应用的AppKey之后,就可以了,后续的信息审核可以不管(不过个人也不了解这样一直处于未审核状态,日后是否会被新浪kill掉)
有兴趣做新浪应用开发的可以好好熟悉下相关的文档。
要查看效果的,可以关注下新浪微博
由于目前没有自己的服务器,又不好用公司的资源,所以只有自己的本本开机的时候才会每小时发布一条微博
脚本部署在自己本本上的计划任务中
/etc/crontab
#pm2.5
15 * * * * personball /home/personball/sinaweibo.sh
后记:
1.设置成整点过后15分钟才抓取数据,主要是注意到官方更新数据也是有一个延迟的,保险起见,咱们延迟15分钟。
2.吐槽:上面那个生成18位随机数的部分脚本。。。仓促啊,没怎么琢磨。。
3.经过这次,发现curl 获取的内容和浏览器上看到的html代码有点不同,这次遇到的就是span定义的font属性在curl获得的内容中表现为标签。。
4. 8月28日,标签id更改:lab_con_pm10->lab_con_pm25
PPPPPPPPPSSSSSSSSSSSSSSSS:最近自己的ubuntu笔记本用的少了,这个微博没在更新了 2012-11-20 记
阅读(4013) | 评论(0) | 转发(1) |