使用Yelp Fusion官方sample.py调用API无结果问题排查求助
Yelp Fusion API调用无结果排查方案
你遇到的这个问题我之前帮朋友排查过,大概率是请求参数、密钥或者响应状态的问题,我给你整理几个针对性的排查步骤:
1. 先把响应的完整信息打出来,定位核心问题
你目前只看到了请求发起的提示,看不到响应细节,这很难判断问题。你可以修改search函数,把响应状态码和原始内容都打印出来,代码如下:
def search(api_key, term, location): url = 'https://api.yelp.com/v3/businesses/search' headers = { 'Authorization': f'Bearer {api_key}', } params = { 'term': term, 'location': location, 'limit': 50 } # 新增打印请求参数,确认参数格式 print(f"当前请求参数: {params}") response = requests.get(url, headers=headers, params=params) # 新增打印状态码和响应内容 print(f"响应状态码: {response.status_code}") print(f"原始响应内容: {response.text}") return response.json()
运行后看状态码就能快速定位:
- 如果是
401:说明你的API密钥肯定有问题,检查复制的时候有没有带空格、换行,或者密钥本身过期/无效 - 如果是
400:大概率是term或location参数不合法,比如location格式不对,或者term是空字符串 - 如果是
429:你超过了Yelp的免费调用额度,去开发者后台看看配额用了多少
2. 确认API密钥的有效性和权限
有时候刚创建的Yelp应用,密钥需要等几分钟才能生效,如果你是刚生成的密钥,不妨等10分钟再试。另外,去你的Yelp开发者后台确认这个密钥对应的应用确实启用了Fusion API的权限。
3. 排查网络和环境问题
如果你的电脑在公司内网或者用了代理,可能会拦截请求。你可以直接用Postman或者浏览器的开发者工具手动发请求测试:
- 请求地址:
https://api.yelp.com/v3/businesses/search?term=coffee&location=San+Francisco - 请求头加上:
Authorization: Bearer 你的API_KEY
如果这个手动请求也失败,那就是网络或者密钥的问题;如果成功,那就是代码里的参数或者依赖有问题。
4. 检查依赖和参数格式
确保你的requests库是最新版本,旧版本可能有兼容性问题:
pip install --upgrade requests
另外,试试用英文地址(比如"Shanghai, CN")和简单的关键词(比如"restaurant")测试,避免中文参数编码导致的问题。
内容的提问来源于stack exchange,提问作者Jacob
相关产品推荐
相关产品推荐

