Python 迭代用于Yelp API代码的输入参数列表
这是我第一次使用堆栈溢出,也是我第一次使用Python,所以如果我提供的代码比需要的多,或者我问了错误的问题,请原谅我。我仍然在弄清楚对API的调用是如何工作的,所以我提供了与之交互的所有代码。此代码有效,但仅适用于参数“CATEGORY_1”和“LOCATION”中的单个字符串输入。我试图弄清楚如何为每个参数输入列表,以便它遍历每个参数,向API发出许多不同的url请求,并打印出所有结果。我希望输出显示列表中的每个位置输入地址,然后显示“bikes”和“skateshops”类别的相应API业务搜索结果。我不确定将for循环放在哪里,而且我使用的.replace属性似乎不适用于列表对象。感谢您的帮助 真诚地,编程n00bPython 迭代用于Yelp API代码的输入参数列表,python,python-3.x,yelp,Python,Python 3.x,Yelp,这是我第一次使用堆栈溢出,也是我第一次使用Python,所以如果我提供的代码比需要的多,或者我问了错误的问题,请原谅我。我仍然在弄清楚对API的调用是如何工作的,所以我提供了与之交互的所有代码。此代码有效,但仅适用于参数“CATEGORY_1”和“LOCATION”中的单个字符串输入。我试图弄清楚如何为每个参数输入列表,以便它遍历每个参数,向API发出许多不同的url请求,并打印出所有结果。我希望输出显示列表中的每个位置输入地址,然后显示“bikes”和“skateshops”类别的相应API业
#Oauth credentials
CLIENT_ID = XXX
CLIENT_SECRET = XXX
# Yelp API Constants
API_HOST = 'https://api.yelp.com'
SEARCH_PATH = '/v3/businesses/search'
BUSINESS_PATH = '/v3/businesses/'
TOKEN_PATH = '/oauth2/token'
GRANT_TYPE = 'client_credentials'
# Desired Search parameters
CATEGORY_1 = ['bikes','skateshops']
LOCATION = ['123 Meadow St, Portland, OR', '222 Spring St, Provo, UT', '808
Williams Ave, Walla Walla, Washington']
RADIUS = 8050
SEARCH_LIMIT = 50
def obtain_bearer_token(host, path):
url = '{0}{1}'.format(host, quote(path.encode('utf8')))
assert CLIENT_ID, "Please supply your client_id."
assert CLIENT_SECRET, "Please supply your client_secret."
data = urlencode({
'client_id': CLIENT_ID,
'client_secret': CLIENT_SECRET,
'grant_type': GRANT_TYPE,
})
headers = {
'content-type': 'application/x-www-form-urlencoded',
}
response = requests.request('POST', url, data=data, headers=headers)
bearer_token = response.json()['access_token']
return bearer_token
def request(host, path, bearer_token, url_params=None):
url_params = url_params or {}
url = '{0}{1}'.format(host, quote(path.encode('utf8')))
headers = {
'Authorization': 'Bearer %s' % bearer_token,
}
print(u'Querying {0} ...'.format(url))
response = requests.request('GET', url, headers=headers,
params=url_params)
return response.json()
def search(bearer_token, term, location):
url_params = {
'categories': term.replace(' ', '+'),
'location': location.replace(' ', '+'),
'radius': RADIUS,
'limit': SEARCH_LIMIT
}
return request(API_HOST, SEARCH_PATH, bearer_token, url_params=url_params)
def get_business(bearer_token, business_id):
business_path = BUSINESS_PATH + business_id
return request(API_HOST, business_path, bearer_token)
def query_api(term, location):
bearer_token = obtain_bearer_token(API_HOST, TOKEN_PATH)
response = search(bearer_token, term, location)
businesses = response.get('businesses')
for x in businesses[:]:
location=x['location']
print('{0},{1},{2},{3},{4},{5},{6},{7}'.format(x['name'],location['addre
ss1'],location['city'],location['state'],location['zip_code'],
x['phone'],x['url'],term))