JavaのAlexaランキングを取得する方法

JavaでAlexaランキングを取得する方法

alexa ranking

この例では、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=example.com

Alexaは次のXML結果を返します。













要素「POPULARITY」を参照してください。「TEXT」属性の値はAlexaランキングです。

2. Java、DOM、Alexa API

Javaでは、通常のHTTPリクエストをAPIに送信し、XMLパーサーを使用してAlexaランキングを取得します。

AlexaSEO.java

package com.example.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("example.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

私のウェブサイトexample.comはAlexaで10720にランク付けられていますが、悪くはありません。