上周末看了新闻博客定时发布没用,发现宁波设立了5个空气质量观测点,每小时发布一次实时观测数据。
发布的网页好难找,感觉真的好难找,于是花了两天时间看看能不能自动抓取网页数据发到新浪微博上。
脚本如下
单击(此处)折叠或打开
#!/bin/bash#FileName: sinaweibo.sh#Author: Personball#Date: 2012 Aug 24 10:30:44 PM#Get PM InfoValue=""content=`date +%T`content=$content">" while read Name iddor_num=`echo "0.${RANDOM}${RANDOM}${RANDOM}"`if [ ${#r_num} -gt 18 ]thenr_num=${r_num:0:18}fiwhile [ ${#r_num} -lt 18 ]dor_num=$r_num"0"donecurl "" >/tmp/pm_index 2>/dev/nullValue=`grep "lab_con_pm10" /tmp/pm_index|grep -oP "\d.\d+ (?=[])"`content=$content"$Name:$Value;"donecontent=$content"(unit: mg/m3)"#发送一个weibocurl -u [微博账号]: [微博密码] -d "source=[新浪微博AppKey]&status=$content" &>/dev/nullexit 0
URL文件内容如下:
单击(此处)折叠或打开
太古小学 1 城市环境监测中心 2 三江中学 4 龙赛医院 5 北仑监测站 7
一开始比较麻烦的地方是需要在新浪开放平台注册的应用开发者,但是创建应用并获取应用的AppKey之后就可以了,后续的信息审核可以忽略(不过我没有不知道一直处于未审核状态,以后会不会被新浪秒杀)
有兴趣做新浪应用开发的可以熟悉相关文档。
看效果可以关注新浪微博
由于我目前没有自己的服务器,利用公司资源也不是很方便,所以我只在笔记本开机的时候每隔一小时发一条微博。
脚本部署在自己的书上的计划任务中
/etc/crontab
#pm2.5
15 ** ** 个人球 /home/personball/sinaweibo.sh
后记:
1.设置为仅在整点后 15 分钟捕获数据。主要原因是注意到官方更新数据有延迟。为了安全起见,我们将延迟 15 分钟。
2.吐槽:上面脚本中生成18位随机数的部分。. . 匆匆忙忙,也没多想。.
3.经过这次,发现curl得到的内容和浏览器上看到的html代码有点不一样。这次遇到的是span定义的字体属性在curl获取的内容中以标签的形式表示。.
4. 8 月 28 日,标签 id 更改:lab_con_pm10->lab_con_pm25
PPPPPPPPPSSSSSSSSSSSSSSSS:最近我的ubuntu笔记本用的比较少博客定时发布没用,这个微博没更新2012-11-20