一开始用的是彩云天气的桌面小部件,自带显示短时降雨预报。但是一直不太准,直到今天,明明大太阳,它说在下雨,我就换了中国天气网。
它确实比彩云天气要准一些,但是用网页版的始终没法自动定位,我灵机一动,安装了app版的。但是它的小部件没法显示短时降雨预报。我就想着用个自定义widgets的app来调用一下人家的api,然后显示出来就OK了。
流程
找api
现有的api都是普通的城市降雨,这种普通app都能做到。花了一些时间去找找不到。和风天气的要好几百RMB。
本来我都打算利用自己服务器去爬那个降水预报的内容,再提取关键内容,搞成一个api,再给自己手机用(知乎上有位同学在好几年前就这样获取美国使馆的空气污染度)。在放弃找api,打算择日开始学习怎么爬东西之前,我最后去探索一下,想知道那个降水预报的网站到底是怎么动态获取降水资讯的。
我在PC网页的流程是进入jsyb网页,进入选择准确地址的地图,确定地址,再显示降水预报。通过Chrome的开发者工具里的network,找到了传输的地址。
仔细一看,居然里面直接包含lat和lon参数,好像就是个api!简直开心死我了。
获取并截取预报
参照人家用kwgt的公式,我知道需要用获取网络资源的公式。但是怎么处理获取来的json字符串呢?人家有用长度去截的,我觉得这不太合适。又尝试了自带的正则表达式,且不说它自带公式的作用只是替换字符串,不能提取,而且它还没法识别引号,转义别的都行,就引号没法转义。这里花