Alexa网站排名API

时间:2018-05-10 18:11:38

标签: python amazon-web-services amazon

今天我正在使用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字符串..问题是什么?!

4 个答案:

答案 0 :(得分:3)

这可能是您要寻找的

from bs4 import BeautifulSoup
import urllib.request
url='wikipedia.com'
rank_str =BeautifulSoup(urllib.request.urlopen("https://www.alexa.com/minisiteinfo/" +url),'html.parser').table.a.get_text()
rank_int=int(rank_str.replace(',',''))
print(rank_int)

答案 1 :(得分:0)

当我在Chrome和Postman中尝试时,这个链接似乎对我很好。你是说正则表达式正在回归&#34;好的&#34;?

该链接的响应也不是JSON,而是XML。我建议您使用XML module

,而不是使用正则表达式来解析XML

编辑:我只是尝试了你的代码,它工作,虽然我需要将响应转换为字符串(它作为一个类似字节的对象),然后传递给正则表达式。

答案 2 :(得分:0)

那很好,意味着您运行脚本的IP已被Alexa列入黑名单。

如果从其他IP运行它,它将起作用。话虽如此,我不知道什么速率/限制会导致IP被列入黑名单

答案 3 :(得分:0)

Alexa排名已移至新位置,现在通过付费API-https://awis.alexa.com/developer-guide提供。说那不贵-https://aws.amazon.com/marketplace/pp/B07Q71HJ3H