Obtener el ranking de una pagina web

Obtener el ranking de una pagina web

Navegando en internet, casualmente encontre un link donde se mostraba como mostrar el Rank o posicion de una pagina web, gracias a un servicio de ALEXA la cual mantiene un ranking de las paginas mas populares entre otras cosas.

Me decidi a mostrar dicha informacion desde Java y pues hoy les traigo el resultado de esa implementacion. El servicio devuelve un XML y para leer dicho XML uso JDOM.

Clase Principal

package clases;

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.List;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.JDOMException;
import org.jdom2.input.SAXBuilder;

public class Principal extends JFrame {

 Document document;
 String ranking = "";
 JTextField txt;
 JLabel linfo;

 public Principal() {

  JPanel p = new JPanel();
  p.setLayout(new BorderLayout());
  JLabel licono = null;
  try {
   licono = new JLabel(
     new ImageIcon(
       new URL(
         "http://roger1345.byethost17.com/javazone/AppletObtenerAlexaRank/Alexaicono.jpg")));
  } catch (MalformedURLException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }

  JPanel pdatos = new JPanel();
  pdatos.add(new JLabel("Ingrese URL sin 'http://' :"));
  txt = new JTextField(15);
  pdatos.add(txt);
  JButton b = new JButton("Obtener");
  b.addActionListener(new ActionListener() {

   @Override
   public void actionPerformed(ActionEvent arg0) {
    ranking = leerXml("http://data.alexa.com/data?cli=10&url="
      + txt.getText());
    linfo.setText("Popularidad :::>>> " + ranking);
   }
  });
  pdatos.add(b);

  JPanel pinfo = new JPanel();
  linfo = new JLabel();
  pinfo.add(linfo);

  p.add(licono, BorderLayout.NORTH);
  p.add(pdatos, BorderLayout.CENTER);
  p.add(pinfo, BorderLayout.SOUTH);

  add(p);
 
  setVisible(true);
  setBounds(0, 0, 450, 350);
  setDefaultCloseOperation(EXIT_ON_CLOSE);

 }

 public String leerXml(String url) {
  String datos = "";
  SAXBuilder saxBuilder = new SAXBuilder();
  try {
   document = saxBuilder.build(new URL(url));
   Element e = document.getRootElement();
   List<element> f = e.getChildren();
   for (Element x : f) {
    if (x.getName().equalsIgnoreCase("SD")) {
     List<element> g = x.getChildren();
     for (Element h : g) {
      if (h.getName().equalsIgnoreCase("POPULARITY")) {
       datos = h.getAttributeValue("TEXT");
      }
     }
    }
   }
  } catch (JDOMException | IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  return datos;
 }
 
 public static void main(String arg[]){
  new Principal();
 }

}

De todas formas podran descargar el proyecto directamente desde aqui.

Aprovecho para comentarles que hice algunos cambios en el look de mi blog, cambio de dominio, entre otras cosas, para que pasen y le echen una miradita.

My Java Zone