Lấy thông tin Alexa Ranking trong Java

Chào các bạn, trong bài viết này, chúng ta sẽ cùng tìm hiểu về cách lấy thông tin Alexa Ranking của web site bằng cách sử dụng Java và DOM XML parser.



Code:
http://data.alexa.com/data?cli=10&url=domainName

1. Alexa API
Nhập url sau vào trình duyệt web

Code:
http://data.alexa.com/data?cli=10&url=congdongjava.com

Alexa sẽ trả về kết quả dưới dạng XML

XML:
<!--
 Need more Alexa data?  Find our APIs here: https://aws.amazon.com/alexa/
-->
<ALEXA VER="0.9" URL="congdongjava.com/" HOME="0" AID="=" IDN="congdongjava.com/">
<SD>
<POPULARITY URL="congdongjava.com/" TEXT="786839" SOURCE="panel"/>
<REACH RANK="743832"/>
<RANK DELTA="-244844"/>
<COUNTRY CODE="VN" NAME="Vietnam" RANK="9833"/>
</SD>
</ALEXA>
Nhìn vào thẻ “POPULARITY“, giá trị của attribute "TEXT" chính là Alexa ranking.

2. Java, DOM và Alexa API
Trong Java, chỉ cần gửi một HTTP request bình thường đến API và sử dụng XML parser để có được Alexa ranking.

AlexaSEO.java
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("congdongjava.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;
    }
}
Kết quả:
Code:
Ranking : 786839
Forum congdongjava.com có rank là 786839 trên Alexa, rất không tốt [-(


Cám ơn các bạn đã theo dõi. Hẹn gặp lại các bạn trong các bài viết sau :)

Bài viết tham khảo tại: https://mkyong.com/java/how-to-get-alexa-ranking-in-java
 

Bình luận