2010-08-25 15 views
7

Ich bin neu in Java und habe ein paar Probleme.Java - Suche nach Daten innerhalb einer Website

Die Hauptidee besteht darin, eine Verbindung zu einer Website herzustellen und Informationen davon zu sammeln und sie in einem Array zu speichern.

Was will ich das Programm zu tun, ist die Website ein Schlüsselwort zu suchen, und speichern, was nach dem Schlüsselwort kommt ..

auf der Titelseite von daniweb entlang der Unterseite der Website es liegt Abschnitt „Tag Cloud“, die mit Tags/kurze Wörter

Tag Cloud gefüllt ist: „ich möchte speichern, was hier geschrieben wird“

Meine Idee ist es, zunächst in den hTML-Code der Website zu lesen und dann suchen Diese Datei für das Schlüsselwort, gefolgt vom Text mit Scanner und StringTokenizer, wird dann als Array gespeichert.

Gibt es einen besseren Weg/einfacher?

wo Sie tun vorschlagen, ich sehe für einige Beispiele

hier ist, was ich bisher.

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

jede Hilfe würde sehr geschätzt werden!

Antwort

6

Ich empfehle jsoup. Es wird die Seite für Sie abrufen und analysieren.

Auf daniweb hat jeder Tag-Cloud-Link die CSS-Klasse tagcloudlink. Sie müssen also jsoup nur mitteilen, dass der gesamte Text in Tags mit der Klasse tagcloudlink extrahiert werden soll.

Dies ist von der Spitze meines Kopfes plus einige Hilfe von der jsoup Seite; Ich habe es nicht getestet, aber es sollte Ihnen den Anfang machen:

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

nette Antwort Jeff. –

1

Sie könnten HTML-Parser dafür verwenden. Hier ist ein Link dazu: HTML Parser. Eine andere, die ich oft benutzt habe, ist Jericho HTML Parser. Hier ist ein Link: Jericho HTML Parser

Verwandte Themen