说起来很过分哎,前面写的忘记保存查了个资料回来就没东西了。。正题:
如果说网络应用存在的理由只是采集现有数据再换种形式表现(卧槽这不就是我现在做的事情吗??),这样一来API成了“数据库”(数据源),只是将数据复制出来。而现在正是要正视API的强大之处。
依旧是百度地图API:
说起来可能会觉的你前面的那些个API使用根本纯粹就是Web控制,手动挡没有任何意义。但是话说回来,上次用python解析了我得到的数据,而这次只是将这个过程更加py。(别问我为什么我的源码会出错,我用的python2.7 2.7 2.7)
既然这样先理一下思路,比如键入一个地址,然后把这个地址的确认性地址都打印(偷懒结合上次)那么第一步我得先获取这个地址的坐标
# coding=utf-8 import json from urllib import urlopen, quote ak = '不给看的KEY' a = '上海市正大广场' def location(): url = 'http://api.map.baidu.com/geocoder/v2/' uri = url + '?address=' + quote(a) +'&output=json&ak='+ak res = urlopen(uri).read().decode('utf-8') temp = json.loads(res) lng = str(temp.get("result").get("location").get("lng")) lat = str(temp.get("result").get("location").get("lat")) return lng,lat print(location())
在得到地址坐标之后:那就很熟悉了:
uri = 'https://api.map.baidu.com/geocoder/v2/?ak='+ak+'&location='+location()[1]+','+location()[0]+'&output=json&pois=1' res = urlopen(uri).read().decode('utf-8') temp = json.loads(res) leng = len(temp.get("result").get("pois")) for i in range(0,leng): print(temp.get("result").get("pois")[i].get("addr"))
这样一下得出结果:
接着附近搜索好吃的:
urls = 'http://api.map.baidu.com/place/v2/search?query=美食&page_size=10&page_num=0&scope=1&location=' urlk = urls +location()[1]+','+location()[0]+'&output=json&ak=' +ak; ress = urlopen(urlk).read().decode('utf-8') temps = json.loads(ress) lengs = len(temps.get("results")) for i in range(0,lengs): print(temps.get("results")[i].get("name")) print(temps.get("results")[i].get("address")) print(temps.get("results")[i].get("telephone")) print("-------------------------------------")
能爬出吃饭的地,但是路很远 。对于API的试探我就暂时先拉个刹车(XML明天见。。。)
虽然初看网络数据采集和网络 API 好像完全是两个不同的主题, 从某种意义上看,网络API 的使用可以作为网络数据采集的一个子集。 毕竟,最终都是要从网络服务器收集数据,然后把它们解析成可用的数据格式,这和你用任何网络爬虫做的事情一模一样。
在最后我还是要说,这次对API的使用初次探了个头,但是从文档来看其开发的流程简单,与JS紧密贴合(我指的是Web),要是有时间python的数据可视化也是非常highthon的一块地,我只是对数据采集简单入门(MD我还要找工作啊。这个坑我写了API的标签,我坚信我们来日还会再见)再感叹一下API的强大吧。我一定会回来填坑的!!
还有我提取的办法有点笨哎,我是先从网址访问获取json再观察特点才写程序。。不知道还有其他好用的方法没=-=