Python调用GoDaddy Appraisal API出错,寻求替代调用方案
GoDaddy评估API调用失败排查与解决方法
原正常运行的Python代码
# 导入所需库 import requests import csv import numpy import random import time # 补充原代码缺失的time模块 # GoDaddy开发者密钥 api_key = "##########################" secret_key = "######################" # 请求头配置 headers = {"Authorization": "sso-key {}:{}".format(api_key, secret_key)} # 评估API端点 appraisal = "https://api.godaddy.com/v1/appraisal/{}" # 读取关键词列表 with open("keyword.txt") as f: keywords = f.read().splitlines() # 写入结果到CSV文件 with open("results.csv", "w", newline="") as file: writer = csv.writer(file) writer.writerow(["domain", "similar domain", "price", "year"]) # 遍历关键词调用API for domain in keywords: # 调用评估API并解析响应 appraisal_res = requests.get(appraisal.format(domain), headers=headers).json() # 随机延迟避免API滥用 delays = [3, 5, 7, 4, 4, 11] time.sleep(numpy.random.choice(delays)) # 提取相似销售域名数据并写入CSV comparable_sales = appraisal_res["comparable_sales"][0] writer.writerow([domain, comparable_sales["domain"], comparable_sales["price"], comparable_sales["year"]]) print(f"{domain}")
报错信息
Traceback (most recent call last): File "C:\Users\LENOVO\Documents\Custom\domaines\lab\already sold finish\ok.py", line 59, in <module> appraisal_res = requests.get(appraisal.format(domain), headers=headers).json() ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\LENOVO\AppData\Local\Programs\Python\Python311\Lib\site-packages\requests\models.py", line 975, in json raise RequestsJSONDecodeError(e.msg, e.doc, e.pos) requests.exceptions.JSONDecodeError: Expecting value: line 1 column 1 (char 0) [Finished in 948ms]
排查与解决步骤
1. 先排查API实际响应内容
直接调用.json()会忽略非JSON响应,先打印响应状态码和内容,定位问题根源:
# 替换原API调用部分 response = requests.get(appraisal.format(domain), headers=headers) print(f"域名: {domain}, 状态码: {response.status_code}") print(f"响应内容: {response.text[:200]}") # 打印前200字符避免输出过长 try: appraisal_res = response.json() except Exception as e: print(f"JSON解析失败: {str(e)}") continue # 跳过当前域名继续处理后续任务
通过输出可以判断是返回了空内容、HTML错误页、还是权限/限流提示。
2. 补充必要的请求头
强制要求服务器返回JSON格式,避免返回其他类型内容:
headers = { "Authorization": f"sso-key {api_key}:{secret_key}", "Accept": "application/json" }
3. 验证API端点和域名格式
- 确认GoDaddy评估API端点是否有变更,当前官方端点是否仍为
https://api.godaddy.com/v1/appraisal/{domain} - 检查
keyword.txt中的内容是否为完整域名(如example.com),而非裸关键词。部分API要求必须传入带后缀的完整域名。
4. 优化限流处理与重试机制
原代码的随机延迟可能不足以应对限流,添加自动重试逻辑处理限流/服务器错误:
from requests.adapters import HTTPAdapter from urllib3.util.retry import Retry # 创建带重试策略的会话 session = requests.Session() retry_strategy = Retry( total=3, # 最多重试3次 backoff_factor=1, # 重试间隔指数递增(1s, 2s, 4s...) status_forcelist=[429, 500, 502, 503, 504] # 需要重试的状态码 ) adapter = HTTPAdapter(max_retries=retry_strategy) session.mount("https://", adapter) # 使用session发起请求 response = session.get(appraisal.format(domain), headers=headers)
5. 确认API密钥权限与配额
- 登录GoDaddy开发者后台,检查新密钥对应的应用是否开通了Domain Appraisal API权限
- 查看API调用配额是否耗尽,是否需要申请提升配额
6. 检查网络环境
确保本地网络可以正常访问GoDaddy API服务器,没有被防火墙、代理拦截。
内容的提问来源于stack exchange,提问作者Abdelali Fihri
相关产品推荐
相关产品推荐

