• User

    [Altri] [Altri] Piccola utility per calcolare il rapporto keywords/pagine concorrenti

    Se vi può essere utile ho buttato giu' uno script in Java per calcolare la "convenienza" ad usare una certa keyword. Fa un semplice rapporto tra il num. medio di richieste di una keywords e le pagine totali concorrenti.

    Allora mettete in un file dal nome file.txt l'elenco di richieste per le chiavi (che trovate con google keywords)

    Es. per il mio sito ho creato il file.txt
    -------------------------- file.txt---------------------
    jboss = 33100
    jboss client = 320
    jboss application = 590
    jboss servlet = 260
    jboss jsp = 260
    jboss ejb = 1000
    jboss performance = 58
    jboss configuration = 320
    jboss struts = 140
    jboss j2ee = 210

    Copiate questo script in un file ReadData.java
    --------------------------ReadData.java
    [LEFT]```

    import java.io.BufferedInputStream;
    import java.io.BufferedReader;
    import java.io.DataInputStream;

    import java.io.FileReader;
    import java.io.IOException;
    import java.net.MalformedURLException;
    import java.net.URL;
    import java.net.URLConnection;
    import java.util.Properties;
    import java.util.StringTokenizer;

    public class ReadData {
    public static final String replace( String line, String oldString, String
    newString )
    {
    int i=0;
    if ( ( i=line.indexOf( oldString, i ) ) >= 0 ) {
    char [] line2 = line.toCharArray();
    char [] newString2 = newString.toCharArray();
    int oLength = oldString.length();
    StringBuffer buf = new StringBuffer(line2.length);
    buf.append(line2, 0, i).append(newString2);
    i += oLength;
    int j = i;
    while( ( i=line.indexOf( oldString, i ) ) > 0 ) {
    buf.append(line2, j, i-j).append(newString2);
    i += oLength;
    j = i;
    }
    buf.append(line2, j, line2.length - j);
    return buf.toString();
    }
    return line;
    }
    public static double search(String key) {
    double hits = 0;

    key = replace(key," ","+");

    URL u = null;

    try {
    u = new URL("INDIRIZZODIGOOGLE/search?hl=it&q="+key);
    //System.out.println("URL aperto: " + u);
    } catch (MalformedURLException e) {
    System.out.println("URL errato: " + u);
    }

    URLConnection c = null;
    DataInputStream istream = null;

    try {

    //System.out.print("Connessione in corso...");
    c = u.openConnection();
    c.setRequestProperty("User-Agent",
    "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)");

    c.connect();
    //System.out.println("ok.");

    BufferedInputStream b = new BufferedInputStream(c.getInputStream());

    istream = new DataInputStream(b);

    //System.out.println("Lettura dei dati...");

    String s;
    StringBuffer sb = new StringBuffer();

    while ((s = istream.readLine()) != null)
    sb.append(s);

    String page = sb.toString();
    int leftOffset= page.indexOf("su circa <b>");
    int rightOffset = page.indexOf("</b>",leftOffset);

    String s_hits = page.substring(leftOffset+12,rightOffset);
    s_hits = replace(s_hits,".","");
    return Double.parseDouble(s_hits);

    //System.out.println(page);

    }

    catch (IOException e) {
    System.out.println(e.getMessage());
    }
    return 0;

    }
    public static void doit() {

    String filename = "file.txt";
    try {
    BufferedReader in = new BufferedReader(new FileReader(filename));
    String line;
    while((line = in.readLine()) != null) { // Read line, check for end-of-file
    StringTokenizer st = new StringTokenizer(line,"=");
    String key = st.nextToken().trim();
    String value = st.nextToken().trim();

    double hits = search(key);
    double doubleVal = Double.parseDouble(value);

    System.out.println(key+"\t\t\t\t"+(doubleVal/hits)*1000);

    }
    in.close(); // Always close a stream when you are done with it
    }
    catch (IOException e) {
    // Handle FileNotFoundException, etc. here
    }

    }
    public static void main(String[] args) {

    doit();

    }

    }

     
     
    [LEFT]Per compilare[/LEFT]
     
    [LEFT]javac ReadData.java
    
    Per eseguire
    [LEFT]java ReadData[/LEFT]
    [/LEFT]
    
     
     
     
     
     
     
    [LEFT]Avrete un output di questo tipo:[/LEFT]
     
     
     
    [LEFT]jboss 3.844367015098723[/LEFT]
     
    [LEFT]jboss client 1.3389121338912136
    
    jboss application 1.1007462686567164
    [LEFT]jboss servlet 0.1566265060240964
    jboss jsp 0.87248322147651
    jboss ejb 0.588235294117647
    jboss performance 0.03766233766233767
    jboss configuration 0.23703703703703705[/LEFT]
    [/LEFT]
    
     
     
     
     
    [LEFT]jboss struts 0.10687022900763359[/LEFT]
     
    [LEFT]Ovviamente piu' è alto l'indice piu' la keyword è "conveniente"....almeno in senso generale.....per poter iniziare a scremare tra un gruppo di chiavi.....
    Spero possa servire
    saluti
    Francesco[/LEFT]
    
     
    [LEFT]P.s. sostituite METTETE QUI L'INDIRIZZO DI GOOGLE con l'indirizzo di google...non sono utente premium quindi niente link :cry:[/LEFT]
     
     
    **Tipo**: 
    Altri

  • User Attivo

    gran bel lavoro, mi installo la Java Virtual Machine su OSX lo testo 😉 Grazie!


  • User

    di niente, mi spiace che la formattazione del codice sia pessima, cmq mi ha dato ottimi risultati nella scelta delle chiavi perchè controlla le chiavi in relazione agli effettivi documenti trovati su google.....forse un upgrade potrebbe essere ricercare anche il numero di volte che appare nei siti come "title" quella determinata keyowrd.....o se avete suggerimenti sono ben accetti !


  • User

    Adesso mi impegno a fare una cosa fatta per bene....ci aggiungo altre funzionalità e provo anche a trasformare il .class in .exe
    p.s. se non vi dispiace metto l'eseguibile da scaricare sul mio sito, mi becco un pochino di traffico.....stay tuned !