python中的Foursquare API

2024-09-29 01:29:01 发布

您现在位置:Python中文网/ 问答频道 /正文

使用foursquare API,我试图制作一个数据框架,其中包含多伦多每个街区有多少家“医院”

这就是我努力实现的目标:

    Neighborhood  No. of hospitals
0  Neighborhood1                 5
1  Neighborhood2                 1
2  Neighborhood3                 3
3  Neighborhood4                 4
4  Neighborhood5                 5

我的第一个选择是:

def getNearbyVenues(names, latitudes, longitudes, radius=500):

venues_list=[]
for name, lat, lng in zip(names, latitudes, longitudes):
    print(name)
        
    # create the API request URL
    url = 'https://api.foursquare.com/v2/venues/explore?&client_id={}&client_secret={}&v={}&ll={},{}&radius={}&limit={}'.format(
        CLIENT_ID, 
        CLIENT_SECRET, 
        VERSION, 
        lat, 
        lng, 
        radius, 
        LIMIT)
        
    # make the GET request
    results = requests.get(url).json()["response"]['groups'][0]['items']
    
    # return only relevant information for each nearby venue
    venues_list.append([(
        name, 
        lat, 
        lng, 
        v['venue']['name'], 
        v['venue']['location']['lat'], 
        v['venue']['location']['lng'],  
        v['venue']['categories'][0]['name']) for v in results])

nearby_venues = pd.DataFrame([item for venue_list in venues_list for item in venue_list])
nearby_venues.columns = ['Neighborhood', 
              'Neighborhood Latitude', 
              'Neighborhood Longitude', 
              'Venue', 
              'Venue Latitude', 
              'Venue Longitude', 
              'Venue Category']

return(nearby_venues)

Toronto_venues = getNearbyVenues(names=Toronto_df['Neighborhood'],
                                   latitudes=Toronto_df['Latitude'],
                                   longitudes=Toronto_df['Longitude']
                                  )

#next cell:

hospitals_df=Toronto_venues[(Toronto_venues['Venue Category']=='Hospital')]
hospitals_df

但它只返回一个结果,我正在搜索的城市总共有40家医院

我也试过搜索?类似这样的疑问:

url = 'https://api.foursquare.com/v2/venues/search?client_id={}&client_secret={}&ll={},{}&v={}&query={}&radius={}&limit={}'.format(
    CLIENT_ID, 
    CLIENT_SECRET, 
    latitude, 
    longitude, 
    VERSION, 
    search_query_hosp, 
    radius, 
    LIMIT)

下一个单元格:

results = requests.get(url).json()
results

下一单元:

# assign relevant part of JSON to venues
venues = results['response']['venues']

# tranform venues into a dataframe
dataframe = json_normalize(venues)
dataframe.head()

它返回了5个项目,我猜解决方案是像我在explore中所做的那样将其作为一个函数来执行?查询,但我不知道如何构建它!请帮忙:D


Tags: nameinurldfforresultslistlng