Wörter zählen auf Internetseiten... die zweite

Status
Nicht offen für weitere Antworten.

kognitio

Aktives Mitglied
Viele Dank für die bisherige Hilfe, aber es funktioniert immer noch nicht... oder nur zum Teil.
Wenn ich "nur" die Wörter zählen lassen will, mit diesem Code:
Code:
import java.net.*;
import java.io.*;
import java.lang.*;
import java.util.*;

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

         // Liest internetseiten
         URL yahoo = new URL("http://www.google.de");
         URLConnection yc = yahoo.openConnection();
         
         BufferedReader in = new BufferedReader(new InputStreamReader(yc.getInputStream()));
         String inputLine;
                    int noOfWords = 0;
	 while( (inputLine=in.readLine()) != null )
	 {
		 // mit split die einzelnen Wˆrter auslesen

		 String [] einzelneWoerter = inputLine.split( " |=|<|>|\"|:|;|-|#|/|,|;|'|&|\\?|$|_" );
                                        noOfWords += einzelneWoerter.length;
		

		 //mit for-schleife wˆrter quecken...
		 for (int i=0; i < einzelneWoerter.length; i++)
		 {
			 System.out.println( "Wort " + noOfWords +": " + einzelneWoerter[i]);
		 }
	 }
     }
}
dann beginnt er ab Wort 31 und zählt irgenwie wirr nach oben. Er verändert immer die Ausgabezahl, wenn der HTML-Text auf eine neue Zeile springt... und ich habe keine Ahnung warum... im Detail sieht das so aus:
Wort 32:
Wort 32: html
Wort 32:
Wort 32: head
Wort 32:
Wort 32: meta
Wort 32: http
Wort 32: equiv
Wort 32:
Wort 32: content
Wort 32: type
Wort 32:
Wort 32: content
Wort 32:
Wort 32: text
Wort 32: html
Wort 32:
Wort 32: charset
Wort 32: ISO
Wort 32: 8859
Wort 32: 1
Wort 32:
Wort 32:
Wort 32: title
Wort 32: Google
Wort 32:
Wort 32: title
Wort 32:
Wort 32: style
Wort 32:
Wort 32: !
Wort 42: body
Wort 42: td
Wort 42: a
Wort 42: p
Wort 42: .h{font
Wort 42: family
Wort 42: arial
Wort 42: sans
Wort 42: serif
Wort 42: }
Wort 47: .h{font
Wort 47: size
Wort 47:
...

Und wenn ich will, dass er mir noch angibt, welche Wörter wie oft vorhanden waren, nehme ich diesem Code:

Code:
import java.net.*;
import java.io.*;
import java.lang.*;
import java.util.*;

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


                


         // Liest internetseiten
         URL yahoo = new URL("http://www.google.de");
         URLConnection yc = yahoo.openConnection();
         
         BufferedReader in = new BufferedReader(new InputStreamReader(yc.getInputStream()));
         String inputLine;
                    int noOfWords = 0;
                    Treemap allWords = new TreeMap();
	 while( (inputLine=in.readLine()) != null )
	 {
		 // mit split die einzelnen Wˆrter auslesen

		 String [] einzelneWoerter = inputLine.split( " |=|<|>|\"|:|;|-|#|/|,|;|'|&|\\?|$|_" );
                                        noOfWords += einzelneWoerter.length;
		

		 //mit for-schleife wˆrter quecken...
		 for (int i=0; i < einzelneWoerter.length; i++){
                                        if (allWords.containsKey(einzelneWoerter[i]) {
                 
                                            int number = ((Integer)allWords.get(einzelneWoerter[i])).intValue;
                                            allWords.put(einzelneWoerter[i], new Integer(number +1);
                                            }
                                            else {
                                            allWords.pit{einzelneWoerter[i], new Integer(1);
		 {
			 System.out.println( "Wort " + noOfWords +": " + einzelneWoerter[i]);
		 }
	 }
     }
}
und hier gibt es mir die Fehlermeldung:
alle.java:42: ')' expected
if (allWords.containsKey(einzelneWoerter) {
^
alle.java:54: illegal start of expression
}
^
alle.java:54: '}' expected
}
^
3 errors


und ich habe keine Ahnung warum?
Für Hilfen wäre ich sehr dankbar...
Herzliche Grüße,
Stephan

EDIT: BITTE BENUTZE DEN CODE TAG FÜR JAVA CODE !
 
bessere möglichket:
du lädst den html quelltext von der website, filterst das html da raus ( mit HTMLParser oder so, die klassen kenn ich noch nicht) und das was übrig bleibst jagst du durch nen StringTokenizer, und die anzahl der einzelnen wörter bekommst du durch countTokens()
 
zu 1).

war mein Fehler:
schmeiß
Code:
noOfWords += einzelneWoerter.length;
weg !

Code:
for (int i = 0; i < einzelneWoerter.length; i++) {
   if(!einzelneWoerter[i].equals("")) {
      noOfWords++;
      System.out.println("Wort " + noOfWords + ": " + einzelneWoerter[i]);
   }
}

zu 2 find mer auch noch was 🙂
 
du hast beim 2. Fehler einige Klammern falsch gesetzt:

Code:
public static void main(String[] args) throws Exception {
		// Liest internetseiten
		URL yahoo = new URL("http://www.google.de");
		URLConnection yc = yahoo.openConnection();

		BufferedReader in =
			new BufferedReader(new InputStreamReader(yc.getInputStream()));
		String inputLine;
		int noOfWords = 0;
		TreeMap allWords = new TreeMap();
		while ((inputLine = in.readLine()) != null) {
			// mit split die einzelnen Wˆrter auslesen

			String[] einzelneWoerter =
				inputLine.split(" |=|<|>|\"|:|;|-|#|/|,|;|'|&|\\?|$|_");
			noOfWords += einzelneWoerter.length;

			//mit for-schleife wˆrter quecken...
			for (int i = 0; i < einzelneWoerter.length; i++) {
				if (allWords.containsKey(einzelneWoerter[i])) {

					int number = ((Integer) allWords.get(einzelneWoerter[i])).intValue();
					allWords.put(einzelneWoerter[i], new Integer(number + 1));
				}
				else {
					allWords.put(einzelneWoerter[i], new Integer(1));
				}

				System.out.println("Wort " + noOfWords + ": " + einzelneWoerter[i]);

			}
		}
	}
Kannst das mal mit deinen Code vergleichen und die falschen Klammern suchen 🙂
 
vielen herzlichen Dank an deathbyaclown. Jetzt zählt er, so wie er sollte... bei den vielen Klammern kommt man sehr schnell durcheinander 🙂
Zu der Worthäufigkeit zerbreche ich mir jetzt nun erst einmal den Kopf und schau mal, ob ich das auch so hinbekomme.
Also nocheinmal, herzlichen Dank...
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben