在此示例中,我们向您展示如何使用Java和DOM XML解析器从未公开的API下面获取Alexa排名:
http://data.alexa.com/data?cli=10&url=domainName
1. Alexa API
例如,在浏览器中键入以下URL:
http://data.alexa.com/data?cli=10&url=mkyong.com
Alexa将返回以下XML结果:
<ALEXA VER="0.9" URL="mkyong.com/" HOME="0" AID="=">
<DMOZ>
<SITE BASE="mkyong.com/"
TITLE="J2EE Web Development"
DESC="Java / J2EE Web Development Tutorials,
which involve Spring, Hibernate, Struts, Maven, jUnit, TestNG, jQuery...">
<CATS/>
</SITE>
</DMOZ>
<SD>
<POPULARITY URL="mkyong.com/" TEXT="10720" SOURCE="panel"/>
<REACH RANK="7924"/>
<RANK DELTA="+600"/>
<COUNTRY CODE="IN" NAME="India" RANK="3542"/>
</SD>
</ALEXA>
参考元素“ POPULARITY ”,“ TEXT ”属性的值为Alexa排名。
2. Java,DOM和Alexa API
在Java中,只需向API发送普通的HTTP请求,然后使用XML解析器即可获取Alexa排名。
AlexaSEO.java
package com.mkyong.seo;
import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
public class AlexaSEO {
public static void main(String[] args) {
AlexaSEO obj = new AlexaSEO();
System.out.println("Ranking : " + obj.getAlexaRanking("mkyong.com"));
}
public int getAlexaRanking(String domain) {
int result = 0;
String url = "http://data.alexa.com/data?cli=10&url=" + domain;
try {
URLConnection conn = new URL(url).openConnection();
InputStream is = conn.getInputStream();
DocumentBuilder dBuilder = DocumentBuilderFactory.newInstance()
.newDocumentBuilder();
Document doc = dBuilder.parse(is);
Element element = doc.getDocumentElement();
NodeList nodeList = element.getElementsByTagName("POPULARITY");
if (nodeList.getLength() > 0) {
Element elementAttribute = (Element) nodeList.item(0);
String ranking = elementAttribute.getAttribute("TEXT");
if(!"".equals(ranking)){
result = Integer.valueOf(ranking);
}
}
} catch (Exception e) {
System.out.println(e.getMessage());
}
return result;
}
}
结果:
Ranking : 10720
我的网站mkyong.com在Alexa中排名10720 ,不错。
参考文献
翻译自: https://mkyong.com/java/how-to-get-alexa-ranking-in-java/