2010-08-25 6 views
7

Je suis nouveau à Java et d'avoir des problèmes.Java - Recherche de données dans un site Web

L'idée principale est de se connecter à un site Web et de collecter des informations et de les stocker dans un tableau.

Ce que je veux que le programme à faire est de rechercher le site trouver un mot-clé, et stocker ce qui vient après le mot clé ..

sur la première page de daniweb le long du fond du site il y a un section intitulée « Tag cloud », qui est rempli avec des balises/mots courts

Tag cloud: « Je veux conserver ce qui est écrit ici »

Mon idée est d'abord lu dans le code html du site puis recherchez ce fichier pour le mot clé suivi du texte en utilisant Scanner et StringTokenizer puis stocker en tant que tableau.

est-il un meilleur moyen/plus facile?

où me conseillez-vous chercher des exemples

Voici ce que j'ai jusqu'à présent.

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) { 
     } 
    } 

toute aide serait très appréciée!

Répondre

6

Je recommande jsoup. Il va récupérer et analyser la page pour vous.

Sur daniweb, chaque lien nuage d'étiquette a la classe CSS tagcloudlink. Il suffit donc de dire à jsoup d'extraire tout le texte dans les balises qui ont la classe tagcloudlink.

Ceci est au sommet de ma tête plus une aide du site jsoup; Je ne l'ai pas testé mais il devrait vous aider à démarrer:

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

belle réponse Jeff. –

1

Vous pouvez utiliser HTML Parser pour cela. Voici un lien vers celui-ci: HTML Parser. Un autre que j'ai beaucoup utilisé et j'aime est Jericho HTML Parser. Voici un lien: Jericho HTML Parser