Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    Come apro i risultati di una ricerca in schede separate con Java?

    Buongiorno a tutti,
    sono nuovo del forum, appena iscritto, ma volevo subito chiedervi un aiuto, stavo pensando di sviluppare in Java un programma che ricevute una serie di parole chiave facesse una ricerca in Google e aprisse i primi 10 risultati che emergono dalla ricerca. Fin'ora ho scritto la parte del codice che si occupa dell'interfaccia grafica, e della ricerca delle parole chiave, inserite dall'utente, in Google; fatto questo però mi sono bloccato perché non riesco a trovare un modo per dire a Java di aprire i primi 10 risultati della ricerca. Avete qualche idea o suggerimento?

    Di seguito vi allego il sorgente del programma scritto fin'ora...

    codice:
    package com.mkyong;
    import javax.swing.*;
    
    import java.awt.*;
    import java.awt.event.*;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.net.URI;
    import java.net.URISyntaxException;
    import java.net.URL;
    import java.net.URLConnection;
    import java.awt.Desktop;
    
    
    @SuppressWarnings("serial")
    public class WebSearch extends JFrame {
        JPanel titolo = new JPanel();
        JPanel centro = new JPanel();
        JPanel invio = new JPanel();
        JLabel title = new JLabel("WebSearch");
        JLabel instr = new JLabel("Inserisci le parole chiave della ricerca:");
        static JTextField inputText = new JTextField(100);
        public static Image icon = Toolkit.getDefaultToolkit().getImage("C:\\Users\\Samuele\\Desktop\\Progetti\\WebSerch\\Icona.png");
        public static Image img;
        JButton ricerca = new JButton("Ricerca");
        Ascoltatore listener = new Ascoltatore();
        public static String url;
        
            //Costruttore della classe
        public WebSearch ()
        {
            super("WebSearch");
            setIconImage(icon);
            setResizable(false);
            setSize(350,300);
            setLocation(500,200);
    
    
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            setVisible(true);
            getContentPane().add(titolo, BorderLayout.NORTH);
            getContentPane().add(centro, BorderLayout.CENTER);
            getContentPane().add(invio, BorderLayout.SOUTH);
            centro.setLayout(new GridLayout(8,1));
            titolo.add(title);
            centro.add(instr);
            centro.add(inputText);
            invio.add(ricerca);
            ricerca.addActionListener(listener);
        }    
        
            //Metodo che si occupa della ricerca delle parole chiave all'interno di Google
        private static void ricerca() throws IOException, URISyntaxException
        {
            String parole = inputText.getText();
            String out ="";
            for(int i=0; i<parole.length(); i++){
                if (parole.charAt(i)!=' '){
                    out += parole.charAt(i);
                }
                else if (parole.charAt(i)==' '){
                    out += "+";
                }
            }
            url = "https://www.google.com/#q=" + out ;
            URI ricerca = new URI(url);
            Desktop.getDesktop().browse(ricerca);
        }
    
            //Classe dell'ascoltatore 
        public class Ascoltatore implements ActionListener {
            public void actionPerformed(ActionEvent event) {
                JButton b = (JButton)event.getSource();
                if (b==ricerca)
                    try {
                        ricerca();
                        download();
                    } catch (IOException | URISyntaxException e) {}
            }
        }
    
            //main
        public static void main (String [] args){
            new WebSearch();
        }
    }

    Con questo codice l'utente inserisce le parole chiave della ricerca ed il programma apre una nuova scheda del Browser con i risultati della ricerca, mentre io vorrei mi aprisse i primi 10 risultati della ricerca ognuno in una nuova scheda. Come posso fare?

    Vi ringrazio anticipatamente per tutte le vostre risposte
    Buona Giornata
    Orion Bartowsky
    Ultima modifica di LeleFT; 26-03-2015 a 17:27 Motivo: Aggiunti i tag CODE

  2. #2
    il codice va scritto dentro i tag
    [code]
    //your code here
    [/code]
    altrimenti si capisce poco

    poi un consiglio..togli
    package com.mkyong;
    e metti un tuo package
    E' come dire ...ho preso parte del codice da quel sito lì

    Inoltre che preparazione hai?
    I computer sono incredibilmente veloci, accurati e stupidi.
    Gli uomini sono incredibilmente lenti, inaccurati e intelligenti.
    Insieme sono una potenza che supera l'immaginazione.

    A.Einstein

  3. #3
    Ciao schumy2000
    grazie per la tua risposta non sapevo che ci fossero i tag per il codice, poi l'ho visto in un'altra discussione ho tentato di modificare il messaggio ma non so perché non me lo fa fare, comunque tutto quello che so di Java l'ho imparato all'università e poi per conto mio ho approfondito diciamo che non sono ai massimi livelli ma me la cavo, solo che in questo caso non sto proprio riuscendo a trovare una soluzione che faccia ciò che vorrei, hai qualche consiglio?
    Ultima modifica di Orion Bartowsky; 26-03-2015 a 17:14

  4. #4
    Beh per come hai strutturato il codice è impossibile.
    Desktop.getDesktop().browse(ricerca);
    con questo comando apri il browser, ma dopo aver aperto e impostato il set della ricerca non hai più alcun controllo sul browser e sui risultati ritornati.
    Per avere controllo sul browser dovresti lavorare con JNI, ma allo stesso tempo avresti solo controllo sula finestra del browser ma non sui risultati.
    A meno che ti crei tu un piccolo browser che ti ritorna i risultati, ma anche su quello ho dei dubbi, su come recuperare i risultati.
    Forse ti posso consigliare di guardare qualcosa con JSON.

    Ciao.
    I computer sono incredibilmente veloci, accurati e stupidi.
    Gli uomini sono incredibilmente lenti, inaccurati e intelligenti.
    Insieme sono una potenza che supera l'immaginazione.

    A.Einstein

  5. #5
    E se invece ci fosse un modo per salvare il contenuto della pagina di ricerca all'interno di un .txt e poi leggere i link dal .txt e con il comando
    Desktop.getDesktop().browse(ricerca);
    aprire le pagine che mi interessano? all'inizio lo avevo pensato proprio così solo che non sono riuscito a trovare una libreria o in generale un algoritmo che mi permetta di diciamo copiare la pagina di ricerca in un .txt. Pensi possa funzionare così? e come posso realizzarlo? cioè come copio per filo e per segno quello che esce nella pagina di risultati ricerca in un .txt?

  6. #6
    Beh il problema è trovare un algoritmo solo che ti permetta di "salvare il contenuto della pagina di ricerca all'interno di un txt"
    Credo sia meglio che prima cerchi qualcosa del genere e poi ti concentri su altro, anche perché a quel punto il modo di continuare dipende da come ti viene restituita la pagina di ricerca...

    Ciao.
    I computer sono incredibilmente veloci, accurati e stupidi.
    Gli uomini sono incredibilmente lenti, inaccurati e intelligenti.
    Insieme sono una potenza che supera l'immaginazione.

    A.Einstein

  7. #7
    cmq ripeto puoi provare con JSON, al momento è quello che può aiutarti maggiormente, perché a menoria non conosco alcuna libreria che faccia il mestiere che chiedi tu.

    https://www.google.it/#q=json%20goog...arch%20results

    Io l'ho usato per un progetto sulla restituzione di coordinate terresti da google map e l'ho trovato soddisfacente.
    Ultima modifica di schumy2000; 26-03-2015 a 18:56
    I computer sono incredibilmente veloci, accurati e stupidi.
    Gli uomini sono incredibilmente lenti, inaccurati e intelligenti.
    Insieme sono una potenza che supera l'immaginazione.

    A.Einstein

  8. #8
    Ci darò un occhiata grazie mille

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.