首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何从python中的YelpAPI请求中获得准确的3条评论?

如何从python中的YelpAPI请求中获得准确的3条评论?
EN

Stack Overflow用户
提问于 2018-08-15 08:34:43
回答 1查看 0关注 0票数 0

我正试着为我已经有业务ID的业务列表提取精确的3条评论。到目前为止,我已经编写了大量的代码。我需要一个函数,专门从YelpAPI中检索业务评论。请让我知道可以创建哪些函数来添加到这个函数中,以便检索这个函数。谢谢

"""

from __future__ import print_function
#import yelpSDK
import json
#from pandas import *
#import pdb
import pandas as pd
import datetime
#import geocoder
#from geopy.geocoders import Nominatim


import argparse
import json
import pprint
import requests
import sys
import urllib


# This client code can run on Python 2.x or 3.x.  Your imports can be
# simpler if you only need one of those.
try:
    # For Python 3.0 and later
    from urllib.error import HTTPError
    from urllib.parse import quote
    from urllib.parse import urlencode
except ImportError:
    # Fall back to Python 2's urllib2 and urllib
    from urllib2 import HTTPError
    from urllib import quote
    from urllib import urlencode
# Yelp Fusion no longer uses OAuth as of December 7, 2017.
# You no longer need to provide Client ID to fetch Data
# It now uses private keys to authenticate requests (API Key)
# You can find it on
# https://www.yelp.com/developers/v3/manage_app
API_KEY= ''


# API constants, you shouldn't have to change these.
API_HOST = 'https://api.yelp.com'
SEARCH_PATH = '/v3/businesses/search'
BUSINESS_PATH = '/v3/businesses/'  # Business ID will come after slash.
BUSINESS_MATCHES_PATH = '/v3/businesses/matches'

# Defaults for our simple example.
DEFAULT_TERM = 'dinner'
DEFAULT_LOCATION = 'San Francisco, CA'
SEARCH_LIMIT = 3


def request(host, path, api_key, url_params=None):
    """Given your API_KEY, send a GET request to the API.
    Args:
        host (str): The domain host of the API.
        path (str): The path of the API after the domain.
        API_KEY (str): Your API Key.
        url_params (dict): An optional set of query parameters in the request.
    Returns:
        dict: The JSON response from the request.
    Raises:
        HTTPError: An error occurs from the HTTP request.
    """
    url_params = url_params or {}
    url = '{0}{1}'.format(host, quote(path.encode('utf8')))
    headers = {
        'Authorization': 'Bearer %s' % api_key,
    }

    print(u'Querying {0} ...'.format(url))

    response = requests.request('GET', url, headers=headers, params=url_params)
    return response.json()

def search_matches(api_key, business):
    """Query the Search API by a search term and location.
    Args:
        term (str): The search term passed to the API.
        location (str): The search location passed to the API.
    Returns:
        dict: The JSON response from the request.
    """

    url_params = {
        'name': business['name'],#replace(' ', '+'),
        'address1': business['address1'],#.replace(' ', '+'),
        'city': business['city'],#.replace(' ', '+'),
        'state': business['state'],#.replace(' ', '+'),
        'zip_code': business['zip_code'],#.replace(' ', '+'),
        'country': business['country']#.replace(' ', '+')
    }
    return request(API_HOST, BUSINESS_MATCHES_PATH, api_key, url_params=url_params)

def get_business(API_KEY, business_id):
    """Query the Business API by a business ID.
    Args:
        business_id (str): The ID of the business to query.
    Returns:
        dict: The JSON response from the request.
    """
    business_path = BUSINESS_PATH + business_id

    return request(API_HOST, business_path, API_KEY)


def get_business_id(business):
    #import pdb; pdb.set_trace()
    try:
        business_id = search_matches(API_KEY, business)

        b_id = business_id['businesses'][0]['id']
    except:
        b_id = 'None'
    return b_id
EN

回答 1

Stack Overflow用户

发布于 2018-08-15 18:14:15

你在找这样的东西吗?

def get_three(id1, id2, id3):
    return [get_business(API_KEY, id) for id in [id1, id2, id3]]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100002196

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档