铃心自定义——C8:从网页获取信息&获取接口(1)

你要知道做一个有大量文本的功能是多么麻烦——所以与其从本地获取,不如从网上拿下来。同样,从网络上我们还能够获取很多有趣的东西——这些东西是我们通过本地方法永远实现不了的。

编辑于 2020.2.11 转载请注明作者

从网页获取信息可以做什么

你访问的所有东西其实都是网页,你说能干什么?

从网页获取抽卡模拟数据,并且在本地进行抽卡。
获取视频信息,让你不用点进去就知道视频讲的是啥。
获取网上的统计信息,让你能够了解当前形势如何。
抓到网络新闻重点,让你省着打开新闻软件了。(或者说省着看广告了)

不管怎么样,从网上获取信息可以算得上是一个极大的拓展——它能做到的远远超出我们本地理论所能达到的。

利用现成的api接口——天气实例

我迈出的第一步就是制作一个天气查询

首先,我们要明白,我们调取调取网页信息的方法有两种,一种是直接访问网页获取网页源代码,或者——通过接口来获取人家提供的信息。

而对于天气的获取,我们则采用后者——通过接口来获取对应的信息。

申请和风天气api key

我们百度搜索和风天气。在该页面注册账号并且登陆。
然后根据人家说明文档创建和管理API应用,在应用管理下添加key并且创建应用。
值得注意的是,我们要选择web api类型。

获取常规天气数据

然后,我们访问说明文档的常规天气数据,了解如何发送请求URL。
由于是免费版,因此有:

我们访问一下,看看这个网站到底返回了什么。

Json格式返回的数据

面对这种一行的json源码,我们最好利用Json格式校验工具进行格式化处理,方便我们阅读。

好看多了,不是吗?

设计读取该形式的铃心方案

对于这种JSON格式的文件,铃心提供了两种解决方案。

在早期,铃心并没有提供直接的Json解析功能,因此我采用的最初方案是利用正则对每个属性进行匹配。(后来也就懒得改了,现在还是这个方案)

但是就目前来说,我推荐大家通过JSON解析的方式来直接读取JSON格式的内容。

好,那我们开始设计代码吧!首先,我们要访问这个网页获取网络源码。

然后我们测试一下——诶?怎么返回了一个错误值呢?

重要概念,编码

首先,我们要知道,之所以我们能在浏览器正常访问,是因为浏览器自动对我们输入的中文进行编码了——而铃心访问的时候并不会那么智能的自动编码,我们需要手动的进行一次编码之后才能正常访问。

这下子返回的就是正常的JSON内容了。
紧接着,我们稍微修改一下,让其不光能够获得北京的信息

JSON格式解析的两种方案

对于获取下来的JSON,我们先采用正则匹配的方式进行数据获取。

正则匹配可以是一种很有效的匹配方式,但是有很多的缺点——比如说我在JSON里随便的插几个空格,很有可能出现JSON结构没有破坏,但是正则表达式却无法匹配的情况。为了规避这种情况,对于这种稳定的JSON结构,我推荐使用JSON解析的方式来获取数据。

关于JSON的属性路径表达式,如果真的要细讲,可能会涉及到很多东西。在此我就简单叙述一下。
JSON中分为两种类型,一种叫做对象,一种叫做数组;具体的关系可以在百科搜索到,这里我就不多谈了。
简单说,以[]括起来的就是数组,其余的都是对象(即以{}括起来的内容)。
对于数组,需要在属性后添加[位置]来确定你所需要的内容。
比如说该例子中,HeWeather就对应着一个数组,但是这个数组只有第一项(也就是0),因此定位向[0],然后从这个项里面拿取basic,再从basic下面拿取location获得属性。

好了,至此你已经学会了如何从一个接口获得自己想要的信息了

关于实现的效果,可以有很多种,比如说我做的是结合了一个制图——

不错吧

做出来的效果还是可以的——字体是我自己选择安装的。
关于制图,在后面我也会稍微提到一些——不过实在是太简单了,我也不会细讲的。

说实话,这玩意我也不是专业的——全都是自己摸索来的加上自学来的一些经验。如果有错,还请多多包涵。

叹气

Yorunina

留下你的评论

*评论支持代码高亮<pre class="prettyprint linenums">代码</pre>

相关推荐