Chinaunix首页 | 论坛 | 博客
  • 博客访问: 410310
  • 博文数量: 39
  • 博客积分: 1046
  • 博客等级: 准尉
  • 技术积分: 895
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-10 16:50
文章分类

全部博文(39)

文章存档

2013年(8)

2012年(31)

分类: LINUX

2012-08-27 14:10:54

上周末看新闻,发现宁波设置了五个空气质量观测点,每小时公布一次实时观测数据,发布在http://auto.nbemc.gov.cn/RealTimePublish/

好不容易找到这个发布的网页,觉得查起来实在是费劲,于是自己花了两天时间,试试能不能自动抓取网页数据,并且发布到新浪微博上。

脚本如下

点击(此处)折叠或打开

  1. #!/bin/bash
  2. #FileName: sinaweibo.sh
  3. #Author: Personball
  4. #Date: 2012 Aug 24 10:30:44 PM
  5. #Get PM Info
  6. Value=""
  7. content=`date +%T`
  8. content=$content">"
  9. while read Name id
  10. do
  11. r_num=`echo "0.${RANDOM}${RANDOM}${RANDOM}"`
  12. if [ ${#r_num} -gt 18 ]
  13. then
  14. r_num=${r_num:0:18}
  15. fi
  16. while [ ${#r_num} -lt 18 ]
  17. do
  18. r_num=$r_num"0"
  19. done
  20. curl "http://auto.nbemc.gov.cn/RealTimePublish/PM25DataDetailParam.aspx?stationid=$id&stationname=$Name&Random=$r_num" >/tmp/pm_index 2>/dev/null
  21. Value=`grep "lab_con_pm10" /tmp/pm_index|grep -oP "\d.\d+(?=[<]/font[>])"`
  22. content=$content"$Name:$Value;"
  23. done
  24. content=$content"(单位:毫克/立方米)"
  25. #Send a weibo
  26. curl -u 【微博帐号】:【微博密码】 -d "source=【新浪微博应用AppKey】&status=$content" https://api.weibo.com/2/statuses/update.json &>/dev/null
  27. exit 0
其中URL文件内容如下:

点击(此处)折叠或打开

  1. 太古小学 1
  2. 市环境监测中心 2
  3. 三江中学 4
  4. 龙赛医院 5
  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 记
阅读(2372) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~
评论热议
请登录后评论。

登录 注册