2010-08-25 19 views
7

Soy nuevo en Java y tengo algunos problemas.Java - Búsqueda de datos en un sitio web

La idea principal es conectarse a un sitio web y recopilar información de él y almacenarlo en una matriz.

Lo que quiero el programa para hacer es buscar en el sitio web de encontrar una palabra clave y almacenar lo que viene después de la palabra clave ..

en la primera página de daniweb lo largo de la parte inferior de la página web hay una sección llamada "nube de etiquetas" que está lleno de etiquetas/palabras cortas

Nube de etiquetas: "Quiero guardar lo que está escrito aquí"

Mi idea es leer por primera vez en el hTML de la página web y luego buscar ese archivo para la palabra clave seguida del texto usando Scanner y StringTokenizer y luego almacenar como una matriz.

¿hay una manera mejor/más fácil?

donde sugieres que buscar algunos ejemplos

Esto es lo que tengo hasta ahora.

import java.net.*; 
import java.io.*; 

public class URLReader { 

    public static void main(String[] args) throws Exception { 

     URL dweb = new URL("http://www.daniweb.com/"); 
     URLConnection dw = dweb.openConnection(); 
     BufferedReader in = new BufferedReader(new InputStreamReader(hc.getInputStream())); 
     System.out.println("connected to daniweb"); 
     String inputLine; 

     PrintStream out = new PrintStream(new FileOutputStream("OutFile.txt")); 

     try { 
     while ((inputLine = in.readLine()) != null) 
      out.println(inputLine); 

      //System.out.println(inputLine); 
      //in.close(); 
     out.close(); 
     System.out.println("printed text to outfile"); 
     } catch (FileNotFoundException e) { 
      e.printStackTrace(); 
     } 

     try { 
      Scanner scan = new Scanner(OutFile.txt); 
      String search = txtSearch.getText(); 
      while (scan.hasNextLine()) { 
       line = scan.nextLine(); 
      //still working 
       while (st.hasMoreTokens()) { 
        word = st.nextToken(); 
        if (word == search) { 

        } else { 

        } 
       } 
      } 
      scan.close(); 
      SearchWin.dispose(); 
     } catch (IOException iox) { 
     } 
    } 

¡cualquier ayuda sería muy apreciada!

Respuesta

6

Recomiendo jsoup. Recuperará y analizará la página por ti.

En daniweb, cada enlace de nube de etiquetas tiene la clase CSS tagcloudlink. Entonces solo necesita decirle a jsoup que extraiga todo el texto en las etiquetas que tienen la clase tagcloudlink.

Esto está fuera de mi cabeza más alguna ayuda del sitio jsoup; No lo he probado pero debería comenzar:

List<String> tags = new ArrayList<String>(); 
Document doc = Jsoup.connect("http://daniweb.com/").get(); 
Elements taglinks = doc.select("a.tagcloudlink"); 
for (Element link : taglinks) { 
    tags.add(link.text()); 
} 
+1

nice answer Jeff. –

Cuestiones relacionadas