zoukankan      html  css  js  c++  java
  • 通过Places API Web Service获取兴趣点数据

    实验将爬取新加坡地区的银行POI数据

    数据库采用mongodb,请自行安装,同时申请google的key

    直接上代码

    #coding=utf-8
    import urllib
    import json
    import requests
    # import pymongo
    import pymongo
    import pymongo.database
    
    class PlacesTest():
        def __init__(self):
            self.key = 'your_key'
            # self.client = googlemaps.Client(self.key)
            self.location = '48.859294,2.347589'
            self.type = 'bank'
            self.language = 'zh-CN'
            self.radius = 1600
            self.baseUrl = 'https://maps.googleapis.com/maps/api/place/nearbysearch/json'
            mongoClient = pymongo.MongoClient('192.168.0.203',27017)
            db = pymongo.database.Database(mongoClient,'googlePlace')
            self.googlePlace_Coll = pymongo.collection.Collection(db,'bank')
        def getHtml(self,url):
            page = urllib.urlopen(url)
            html = page.read()
            return html
        def test_places_nearby_search(self):
            payload = {
                'key': self.key,
                'location': self.location,
                'type': self.type,
                'radius': self.radius,
                'language': self.language,
            }
            headers = {'User-Agent':"Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Firefox/31.0",
                       "Accept": "image/png,image/*;q=0.8,*/*;q=0.5"
                       }
            # url = 'https://maps.googleapis.com/maps/api/place/nearbysearch/json'
            r = requests.get(self.baseUrl, timeout=200, headers=headers, params=payload)
            data=r.json()
            # html = self.getHtml()
            # # print html
            # data = json.loads(html)
            print r.url,data['results'].__len__()
            for row in data['results']:
                old = self.googlePlace_Coll.find_one({'id':row['id']})
                # print old
                if old==None:
                    self.googlePlace_Coll.insert_one(row)
            # print data['results']
    
    latitude=1.2392984960090898
    longitude=103.61274719238281
    _latitude=1.4644553893995902
    _longitude=104.00619506835939
    i=0
    PlacesTest=PlacesTest()
    
    while (latitude<=_latitude):
            while (longitude<=_longitude):
                # d=getFlatternDistance(latitude,longitude+1,latitude,longitude);
                # L.circle([latitude,longitude+0.5], {radius: d/2,color: "#ff7800"}).addTo(map);
                PlacesTest.location=str(latitude)+','+str(longitude)
                PlacesTest.test_places_nearby_search()
                i=i+1
                longitude=longitude + 0.02
            longitude=103.61274719238281
            # console.warn(d);
            latitude=latitude + 0.02
            # // console.warn(latitude,longitude);
            # // continue;

    使用限制:

    Google Places API Web Service 强制执行每 24 小时 **1,000 次免费请求的默认限制,该默认限制由计算客户端和服务器端请求数量之和得出。

    如果超过初始限制,应用将会开始出现故障。 您可以在 Google API Console 上启用收费来验证自己的身份,免费将此限制增加到每 24 小时 150,000 次请求。

    验证身份时要求提供信用卡。 要求信用卡纯粹是为了验证您的身份。 不会由于您使用 Google Places API Web Service 而通过您的信用卡收取费用。

    免费使用的最大限制为每 24 小时 150,000 次请求。 如果您的应用超过该限值,将会再次开始出现故障。 购买 Google Maps APIs Premium Plan 许可证可获得每 24 小时超过 150,000 次请求的限值。

    如果您预期请求次数会超过默认的允许请求次数,请提前采取措施增大限值。

    Google Places API Web Service 也有使用率限制。 无论有多少位用户共享同一项目,均以用户会话为单位施加使用率限制。

    注:文本搜索服务在计算请求次数时需要乘以 10 倍。 也就是说,您进行的每个“文本搜索”请求将按 10 次请求从配额中扣除。

    如果您的 Google Maps APIs Premium Plan 购买合同中已包含 Google Places API Web Service,倍数可能不同。

  • 相关阅读:
    nunit2.5.7 单元测试时提示:“当前不会命中断点 还没有为该文档加载任何符号”
    文件下载报错:引发类型为“System.OutOfMemoryException”的异常-.Net 内存溢出
    asp.net 访问页面访问统计实现 for iis7
    easyui tree 更改图标
    asp.net 访问页面访问统计实现
    记一次空格引起的查询问题
    SVN如何忽略dll文件和bin目录
    vmware 中安装Ghost XP 版本心得
    冒泡排序
    JS数组去重
  • 原文地址:https://www.cnblogs.com/Micang/p/8662709.html
Copyright © 2011-2022 走看看