分享

WEBSERVICE函数通过网页链接获取网络数据

 刘卓学EXCEL 2021-04-02
你好,我是刘卓。欢迎来到我的公号,excel函数解析。今天来分享两个web类函数:encodeurl和webservice。它们可以通过网页链接直接用公式从web服务器获取网络数据。常见的有有道翻译,手机归属地查询等。
-01-

ENCODEURL函数


encodeurl函数是将字符串(主要是中文字符)转为url编码(进行utf-8编码)的字符串,语法如下,只有一个参数。

ENCODEURL(text)

text:是需要进行url编码的字符串。

如下图所示,当在单元格输入公式=ENCODEURL("你好"),返回"%E4%BD%A0%E5%A5%BD"。你可以简单把它看作是加密了,或者转码了。因为我不是计算机专业的,对这些概念也不是很清楚,只能凭自己的理解来讲。感兴趣的可以自己百度下哈。
其实在浏览器的网页链接中,会经常看到这样的字符串。当在浏览器中搜索“你好”后,再点击一下网址那里,就可以看到“你好”被转成url编码了。
在浏览器中,输入汉字时,会自动转码。但在excel中,不会自动转码,所以要用encodeurl来转。只有转码后,才能访问服务器,获得网络数据。(最后这一句是我瞎bb的,姑且听之,你只要知道encodeurl是用来转码的就可以了。)

-02-

WEBSERVICE函数

webservice函数可以通过网页链接地址从web服务器获取数据。语法如下,只有一个参数。

WEBSERVICE(url)

url:是web服务器的网页地址。如果url的字符串长度超过2048个字符,那么webservice函数返回错误值。

注意:只有在计算机联网的前提下,才能使用webservice函数。

-03-
具体应用

1.有道翻译

调用有道翻译来进行中英文互译。下图A列是一些词语,现在要在B列对其翻译,可以在B3单元格输入下面的公式,下拉填充。

=FILTERXML(WEBSERVICE("http://fanyi.youdao.com/translate?&i="&ENCODEURL(A3)&"&doctype=xml"),"//translation")


webservice函数里边的“http://..."那一串是有道翻译的网页地址,它是固定的。只有上图中蓝色部分是变化的,因为i=后面是要进行翻译的词语,所以用encodeurl转码一下。

webservice返回的结果如下图所示,它从web服务器获取到的数据是xml格式的字符串,里边包含了一些信息。
我把webservice返回的结果单独放出来。其中input标签里存放的是要翻译的词语,translation标签里放的是翻译后的结果。我们只需要翻译后的结果,所以需要用filterxml函数提取出translation标签里的结果。其实filterxml也是一个web类函数。
2.小写金额转大写
调用API将小写金额转为大写金额。在B16单元格输入下面的公式,下拉填充。公式看起来很长,其实一点都不难。如果你自己去写小写金额转大写的公式,还是很难的。调用API还是挺方便的。

=TRIM(RIGHT(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(WEBSERVICE("http://mws./moneywords/query.u?uid=11457&appkey=866debb9a2e4101af6e2fb63f2fe56fe&money="&A16),"}",),"""",),":",REPT(" ",99)),99))


webservice函数的参数是一个api接口地址,其中uid部分是用户的id,appkey是应用的key,money是我们要转换的小写金额。上面那个api是我在一个网站注册的,你们有需要的话可以用我提供的这个,或者自己也注册一个,网址后面我会提供。

下面来看下webservice通过这个api接口会返回什么结果?结果如B16单元格所示,是一个json格式的字符串。money后面的250是要转换的小写金额,words后面的是转换后的大写结果。

我们只需将大写金额提取出来就可以了。我这里提取的方法是用替换,先把右花括号替换成空,再把双引号替换成空,再把冒号替换成99个空格,然后从右边提取99个字符,最后用trim去除多余的空格。当然你可以用自己的方法提取。

从上图可以看出,当小写金额是负数的时候,结果会不正确。需要你自己改进一下公式。下面简单说一下什么是api?

什么是API?

API英文名称为Application Programming Interface,翻译为应用程序接口。是一些预先定义的接口(如函数、HTTP接口),用来提供应用程序与开发人员基于某软件或硬件得以访问的一组例程,而又无需访问源码,或理解内部工作机制的细节。——百度百科

简单理解,就把它当作一个接口。web服务器或操作系统为我们或程序提供的接口,通过这个接口,可以访问服务器或操作系统,从而获取数据。

其实在生活中,也有很多例子。比如插座就可以看作api,或者电脑的usb接口也可以看作api,甚至一个公司的前台或客服也可以看作api,通过前台你就可以得到这个公司的部分服务,而不需了解这个公司是怎么运行的。(以上是我个人的看法,你姑且听之。如有错误,请多多指证!)

为什么我会对api有所了解?因为我经常听群里的人说api,尤其是有人问怎么将汉字转为拼音时,有些大佬就说api。我就对这个东西很好奇,然后就上网查了一点资料。

后来经过一天的努力终于找到了一个api的网站。网站地址为https://www./?sc=YLD6A2E2494B1E,名叫幽灵API。里边的一些api接口都可以使用,只是有次数限制,有需要的话可以自己去看下。如果你有其他好的免费的API,也希望多多分享🤭。

3.汉字转拼音

下图是调用汉字转拼音的API,将A列的汉字转为B列的拼音。公式和上面转大写金额是差不多的,只需更改一下API,然后输入的汉字要用encodeurl转码下,这个API也在上面的网站里。我测试了几个词语,发现它是可以区分多音字词语的。
链接:

https://pan.baidu.com/s/1muV_mS8rv3rE-r1XIL5lwg

提取码:70zb

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多