API和爬虫真正的Py

/ 1评 / 0

    说起来很过分哎,前面写的忘记保存查了个资料回来就没东西了。。正题:

    如果说网络应用存在的理由只是采集现有数据再换种形式表现(卧槽这不就是我现在做的事情吗??),这样一来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的强大吧。我一定会回来填坑的!!

  1. NoString说道:

    还有我提取的办法有点笨哎,我是先从网址访问获取json再观察特点才写程序。。不知道还有其他好用的方法没=-=

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注