2017-11-28 5 views
0

// Ich versuche eine Funktion zum Abfangen aller Ergebnisse der Suche nach einem String zu machen, // aber ich fange nur ein Element ab und mein geht nicht weiter zu allen Ergebnissen von // meiner Suche. // Es gibt einen Fehler in meiner Schleifensequenz? // Haben Sie eine Verschluckung?Suchergebnisse in JTable speichern

// Dies ist mein Code. // Sorry mein Code ist in Spanisch.

private void Buscar(String tema){ 
    String url = "http://www.google.com/search?q="+tema; 
    String resultado; 
    String[] resultados; 
    DefaultTableModel model = (DefaultTableModel) jT_ResultadosBusqueda.getModel(); 
    int contacampos; 
    try{ 
     URL obj = new URL(url); 
     HttpURLConnection con = (HttpURLConnection) obj.openConnection(); 
     con.setRequestMethod("GET"); 
     con.setRequestProperty("User-Agent", USER_AGENT); 
     BufferedReader in = new BufferedReader(
      new InputStreamReader(con.getInputStream())); 
     StringBuffer response = new StringBuffer(); 
     while ((tema = in.readLine()) != null) { 
     response.append(tema); 
    } 
    in.close(); 
    resultado = response.toString(); 
    resultados = resultado.split("<a href=\"/url?q="); 
    contacampos = 1; 
    do{ 
     for (int i = 0; i < resultados.length; i++) { 
      //JOptionPane.showMessageDialog(this,i); 
      //JOptionPane.showMessageDialog(this,resultados.length); 
      int inicio = resultados[i].indexOf("\"http"); 
      //JOptionPane.showMessageDialog(this,inicio); 
      int fondo = resultados[i].indexOf("\">"); 
      //JOptionPane.showMessageDialog(this,fondo); 
      String result = resultados[i].substring(inicio + 1, fondo); 
      model.addRow(new Object[]{result,"Ejemplo1","Tema1","Asunto1","www.1.com"}); 
     } 
         contacampos = contacampos +1; 
    }while(contacampos<resultados.length);   

    }catch(HeadlessException | IOException e){ 
     JOptionPane.showMessageDialog(this,e.getMessage(),"¡Aviso!",JOptionPane.ERROR_MESSAGE); 
    } 
} 
+1

Anstatt zu versuchen, das Rad neu zu erfinden, vielleicht auf einige der verfügbaren Parsen einen Blick, wie [jsoup] (https://jsoup.org) – MadProgrammer

+0

Ich werde die JSoup überprüfen. Danke für Ihre Hilfe. –

Antwort

0

Die Lösung war Jsoup.

Dies ist mein tatsächlicher Code.

private void Buscar(String tema){ 
     try { 
      // TODO add your handling code here: 
      org.jsoup.nodes.Document doc = Jsoup.connect("http://www.google.com/search?q="+tema).get(); 
      DefaultTableModel model = (DefaultTableModel) jT_ResultadosBusqueda.getModel(); 
      //doc.title() 
      Elements link = doc.select("a[href]"); 
      for (Element linkline : link) { 
       JOptionPane.showMessageDialog(this,linkline); 
       model.addRow(new Object[]{linkline.tagName(),linkline.id(),"","",""}); 
      } 
     } catch (IOException ex) { 
      Logger.getLogger(Buscador.class.getName()).log(Level.SEVERE, null, ex); 
     } 
    }