Alexa网站排名API突然失效,返回“Okay”而非XML的问题求助
Alexa Site Rank API失效问题解析
问题背景
你之前用这段Python代码调用Alexa的站点排名API获取网站受欢迎度:
import urllib.request, sys, re site = 'https://stackoverflow.com/questions/' xml = urllib.request.urlopen('http://data.alexa.com/data?cli=10&dat=s&url=%s'%site).read() try: rank = int(re.search(r'<POPULARITY[^>]*TEXT="(\d+)"', xml).groups()[0]) except: rank = -1 print('Your rank for %s is %d!\n' % (site, rank))
原本运行正常,但突然失效了——手动访问API链接http://data.alexa.com/data?cli=10&dat=s&url=https://stackoverflow.com/questions/时,只返回了单词“Okay”,完全不是预期的XML格式。
问题原因
Alexa这个旧的公开数据API已经被弃用了。亚马逊早就停止维护这个免费接口,现在访问它只会返回无意义的“Okay”响应,不再提供任何站点排名的XML数据。这也是为什么你的正则匹配完全失效的原因——根本没有<POPULARITY>标签可以匹配了。
替代方案
如果还需要获取站点排名数据,你可以考虑这些方向:
- 使用Alexa Internet的官方付费API:现在他们只提供商业级的访问服务,需要注册付费账号才能获取数据。
- 改用其他免费/低成本的站点排名工具API:比如SimilarWeb、Ahrefs的免费层级接口,或者StatCounter的公开数据接口,不过这些接口的调用限制和返回格式各有不同,需要重新适配代码。
- 注意:很多免费的第三方排名数据接口可能存在数据延迟或者精度问题,使用前最好先测试验证。
内容的提问来源于stack exchange,提问作者Minions
相关产品推荐
相关产品推荐

