我试图使用radarsearch来查找与我市关键字相关的所有业务,以便检索Places,然后使用Places获取每个位置ID (例如名称或格式化地址)的更多信息。
在我的第一条道路上,我把我的城市分成了9圈,每一条都是半径22公里的,并且避开了农村地区,那里不应该有任何商业活动。通过这种方式,我获得了大约150个业务(一旦删除重复的结果,由于周遭重叠)。这一结果不可靠,因为该公司的官方网页声称有245。
为了找回所有的生意,我把我的城市分割成半径10公里的圆周。因此,我用大约50对坐标填充了这个城市,现在包括所有的区域,包括农村和非农村。现在,令人惊讶的是,我只得到了81家企业!这怎么可能?
我把所有的信息存储在分开的字典中,我注意到每个字典的数据量随着半径的增加而增加,并且总是一样的(对于一个固定的半径)。
现在,除了前面的问题之外,有没有办法限制每个请求产生的结果的数量?
我使用的代码如下:
dict1 = {}
radius=20000
keyword='keyworkd'
key=YOUR_API_KEY
url_base="https://maps.googleapis.com/maps/api/place/radarsearch/json?"
list_dicts = []
for i,(lo, la) in enumerate(zip(lon_txt,lat_txt)):
url=url_base+'location='+str(lo)+','+str(la)+'&radius='+str(radius)+'&keyword='+keyword+'&key='+key
response = urllib2.urlopen(url)
table = json.load(response)
if table['status']=='OK':
for j,line in enumerate(table['results']):
temp = {j : line['place_id']}
dict1.update(temp)
list_dicts.append(dict1)
else:
pass
发布于 2017-04-26 08:09:07
最后,我设法解决了这个问题。
问题是,必须在每个循环迭代中完成dict初始化。现在它存储了所有的信息,我从一开始就检索了我想要的。
dict1 = {}
radius=20000
keyword='keyworkd'
key=YOUR_API_KEY
url_base="https://maps.googleapis.com/maps/api/place/radarsearch/json?"
list_dicts = []
for i,(lo, la) in enumerate(zip(lon_txt,lat_txt)):
url=url_base+'location='+str(lo)+','+str(la)+'&radius='+str(radius)+'&keyword='+keyword+'&key='+key
response = urllib2.urlopen(url)
table = json.load(response)
if table['status']=='OK':
for j,line in enumerate(table['results']):
temp = {j : line['place_id']}
dict1.update(temp)
list_dicts.append(dict1)
dict1 = {}
else:
pass
https://stackoverflow.com/questions/43466403
复制相似问题