Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Java - Ottenere dati da sito web.
Forum - Java - Ottenere dati da sito web.

Avatar
crashoverride (Ex-Member)
Rookie


Messaggi: 39
Iscritto: 12/12/2010

Segnala al moderatore
Postato alle 23:41
Martedì, 26/07/2011
Ciao, ho provato a ottenere dei dati da una pagina di Amazon ma qualcosa fa problemi.
Il codice è questo:
Codice sorgente - presumibilmente Java

  1. import java.io.BufferedReader;
  2. import java.io.IOException;
  3. import java.io.InputStreamReader;
  4. import java.net.URLConnection;
  5. import java.net.URL;
  6.  
  7. public class Bot {
  8.  
  9.         public static void main(String[] args) throws IOException {
  10.        
  11.                 BufferedReader buff;
  12.                 InputStreamReader inStream;
  13.                 String htmlCode = null;
  14.                 try{
  15.                         URL url = new URL("http://www.amazon.it/gp/bestsellers/electronics/473246031/ref=s9_dnav_bw_ir12_z?pf_rd_m=A11IL2PNWYJU7H&pf_rd_s=center-1&pf_rd_r=1VC27Z69NFM1FJAR2YNY&pf_rd_t=101&pf_rd_p=245982287&pf_rd_i=412609031");
  16.                         URLConnection urlConnection = (URLConnection)url.openConnection();
  17.                        
  18.                        
  19.                        
  20.                         inStream = new InputStreamReader(urlConnection.getInputStream());
  21.                         buff = new BufferedReader(inStream);
  22.                        
  23.                         while(true){
  24.                                 if (buff.readLine()!=null){
  25.                                         htmlCode += buff.readLine() + "\n";
  26.                                 }else{
  27.                                         break;
  28.                                 }
  29.                         }
  30.                        
  31.                         int startFrom = htmlCode.indexOf("<div class=\"zg_rank\">");
  32.                         int endFrom = htmlCode.indexOf("</div>");
  33.                        
  34.                         String idNumber = htmlCode.substring(startFrom, endFrom);
  35.                        
  36.                         System.out.println("idNumber");
  37.                 }catch(Exception e){}; 
  38.                        
  39.         }
  40.  
  41. }



E dovrebbe stampare il contenuto di queste Div tag
<div class="zg_rank">1</div>
C'è ne sono 20 guardando il source code con Firebug però una volta che ho finito di leggere dati dal BufferedReader se poi stampo la stringa che ho fatto non è uguale al codice che mi viene visualizzato con Firebug quindi il tuttto non funziona.

Sapete come posso mettere apposto il tutto??

Grazie.

PM
Avatar
Bonny (Member)
Expert


Messaggi: 437
Iscritto: 24/04/2009

Up
0
Down
V
Segnala al moderatore
Postato alle 10:20
Venerdì, 29/07/2011
prova cosi forse funziona :
Codice sorgente - presumibilmente Java

  1. import java.io.BufferedReader;
  2. import java.io.InputStream;
  3. import java.io.InputStreamReader;
  4. import java.net.URL;
  5. import java.net.URLConnection;
  6. import java.sql.SQLException;
  7.  
  8. public class Main {
  9.  
  10.     private URL url;
  11.     private URLConnection con;
  12.     private String record;
  13.     private String htmlCode = "";
  14.  
  15.     public Main() {
  16.  
  17.         try {
  18.  
  19.             url = new URL("http://www.amazon.it/gp/bestsellers/electronics/473246031/ref=s9_dnav_bw_ir12_z?pf_rd_m=A11IL2PNWYJU7H&pf_rd_s=center-1&pf_rd_r=1VC27Z69NFM1FJAR2YNY&pf_rd_t=101&pf_rd_p=245982287&pf_rd_i=412609031");
  20.             con = (URLConnection) url.openConnection();
  21.  
  22.             InputStream in = con.getInputStream();
  23.             BufferedReader br = new BufferedReader(new InputStreamReader(in));
  24.  
  25.             record = br.readLine();
  26.             while (record != null) {
  27.                 // System.out.println(record);
  28.                 htmlCode += record;
  29.                 record = br.readLine();
  30.             }
  31.             in.close();
  32.             int startFrom = htmlCode.indexOf("<div class=\"zg_rank\">");
  33.             int endFrom = htmlCode.indexOf("</div>");
  34.  
  35.             String idNumber = htmlCode.substring(startFrom, endFrom);
  36.             //oppure
  37.             /*
  38.             int i;
  39.             do {
  40.             i = br.read();
  41.             System.out.print((char) i);
  42.             } while (i != -1);
  43.              */
  44.         } catch (Exception ex) {
  45.             System.err.println(ex.getMessage());
  46.         }
  47.     }
  48.     public static void main(String[] args) throws SQLException {
  49.         Main m = new Main();
  50.     }
  51. }


PM