Java: Analyse einer Website

Hi!
Ich beschäftige mich erst seit ein paar Tagen mit Java und bräuchte einmal eure Hilfe. Ich möchte ein Programm schreiben, welches Webseiten (Die Daten schreibe ich in eine Textdatei) einliest und diese nach einem bestimmtem Wort durchsucht. Wenn das Wort auftaucht möchte ich eine Email bekommen mit einem vorher definiersten Text, wenn nicht dann soll er mit der nächsten Webseite weitermachen. Habt ihr eine Idee wie man das am Besten realisieren kann?

Bin für jeden Tipp dankbar.

hi

google:
web crawler source java

http://www.freevbcode.com/ShowCode.Asp?ID=491
http://www-2.cs.cmu.edu/~rcm/websphinx/
http://java.sun.com/developer/technicalArticles/Thir…
etc.

letztere duerfte am interressantesten sein. quasi ein HOWTO von sun

viel spass
josh

Hi! Danke für deine Antwort, aber das meinte ich so nicht :smile:
Ich möchte praktisch vorher per Hand eine Textdatei mit URLs füllen die er dann abklappern soll und auf genau ein Wort hin untersuchen soll. Z.B. steht in der Textdatei http://www.mustermann.de/seite7.htm. Wenn er nun diese Seite durchsucht und auf das Wort „Party“ stößt dann möchte ich eine Email bekommen. Und so sollen ca. 500 Webseiten eingetragen werden, die er dann fortlaufend untersuchen soll und zwar nur auf dieses eine Wort. Wenns nicht vorkommt passiert eben nichts.
Hab ich das jetzt verständlicher ausgedrückt? :smile:

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hi,

wo liegen konkret deine Schwierigkeiten?

Ich möchte praktisch vorher per Hand eine Textdatei mit URLs
füllen die er dann abklappern soll

Ich würde es wohl in etwa so machen:

BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream("File\_mit\_URLS")));
String line;
while((line = reader.readLine()) != null)
{
 readULR(line);
}

und auf genau ein Wort hin
untersuchen soll.

public void readURL(String adress)
{
 URL url = new Url(adress);
 BufferedReader urlReader = new BufferedReader(new InputStreamReader(url.openStream()));
 String line;
 while((line = urlReader.readLine()) != null)
 {
 if(line.indexOf("deinSuchWort") \>= 0)
 {
 writeEmail();
 break;
 }
 }
}

Für writeEmail() brauchst du dann wohl http://java.sun.com/products/javamail/ für meine Code-Schnipsel die Klassen http://java.sun.com/j2se/1.4.2/docs/api/java/net/URL… und http://linda/api/java1.4/api/java/io/BufferedReader.html.

gruß
Heavy

Danke, dass sieht schonmal nicht schlecht aus. Nur was mache ich mit den Klassen die ich runterladen soll? Ich hab mir Javamail runtergeladen, und was nun? Wohin muss ich die ganzen Datein kopieren?
Und die anderen Beiden Klassen die ich runterladen soll, wo kann ich das tun? Der letzte Link geht nicht mehr und bei dem davor blicke ich nicht so ganz durch.

Wenn ich den Code den du gepostet hast in den Javaeditor eingebe und teste, dann kommen nur Fehlermeldungen. Und wohin muss ich die .txt datei schreiben damit sie erfasst wird? oder kann ich im Code den Pfad angeben? z.b. c:\javatest\url.txt?

Sorry bin wirklich nicht der hellste auf dem Gebiet.

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Servus,

auch wenn es eigentlich einen anderen Focus hat, solltest du dir vielleicht mal http://httpunit.sourceforge.net anschauen.

Die Bibliothek bietet einfach zu nutzende Schnittstellen, um Webseiten zu laden und nach links zu durchforsten. Da bleibt wohl nur noch wenig Handarbeit uebrig.

/Dirk

zum mailen …
hi,
zu den mail zeugs kann ich dir helfen.
das hab ich letztens gemacht. die du das javamail installierst solltest du unter google finden oder www.sun.com

dann brauchst du ne authentificator klasse und ne klasse für dein programm na sich.
natürlich noch einen mail account bei dem du den pop3 und smtp Server weißt.
z.B. web.de oder gmx.de

das hier is deine authentificator klasse

import javax.mail.*;

public class auten extends Authenticator {

public PasswordAuthentication getPasswordAuthentication() {

// getPassword() liefert ein Array, aus Sicherheitsgründen
// Dieses muss in eine Zeichenkette umgewandelt werden.
// PasswordAuthentication() constructor.
String password = new String(" hier dein passwort");
String username = new String(„dein login“);
// Löschen des PWD
// Der Provider kennt das PWD noch

return new PasswordAuthentication(username, password);
}
}

das is alles.

die andere klasse schick ich dir mal per mail.

cheers … Martin

Danke, dass sieht schonmal nicht schlecht aus. Nur was mache
ich mit den Klassen die ich runterladen soll? Ich hab mir
Javamail runtergeladen, und was nun? Wohin muss ich die ganzen
Datein kopieren?

Die Java Mail API besteht aus einigen JAR Files, die du in den CLASSPATH aufnehmen mußt. Es sind dort Beispiele dabei, wie man Mails per SMTP verschicken kann.

Und die anderen Beiden Klassen die ich runterladen soll, wo
kann ich das tun?

java.net.URL und java.io.BufferedReader gehören zu den Standard Java Klassen, die mußt du wenn du das Java Development Kit hast nicht extra herunterladen. Die Links führen lediglich zu der Dokumentation dieser Klassen

Der letzte Link geht nicht mehr und bei dem
davor blicke ich nicht so ganz durch.

Ups, der letzte Link zeigt zu meinem Doku-Server, der kann nicht funktionieren, sollte http://java.sun.com/j2se/1.4.2/docs/api/java/io/Buff… heißen. Sind die Dokus der beiden Klassen, d.h. die beschreibung der Methoden die sie zur Verfügung stellen (und die ich z.T. verwendet habe).

Wenn ich den Code den du gepostet hast in den Javaeditor
eingebe und teste, dann kommen nur Fehlermeldungen. Und wohin
muss ich die .txt datei schreiben damit sie erfasst wird? oder
kann ich im Code den Pfad angeben? z.b. c:\javatest\url.txt?

Ja, du kannst den kompletten Pfad zur Datei angeben, den Backslash mußt du allerdings escapen, d.h. z.B. „c:\javatest\url.txt“ schreiben, oder einen „normalen“ slash benutzen, also „c:/javatest/url.txt“.

Mein Beispiel besteht nur aus CodeSchnipseln, du mußt die verwendeten kLASSEN auch importieren

import java.net.URL;
import java.io.BufferedReader;
import java.io.FileInputStream;

Hab jetzt leider keine Zeit für ein ausführlicheres Beispiel, wollte eigentlich schon weg sein :smile:

gruß
Heavy

Hi! Also habe ich nun erstmal folgendes:

import java.net.URL;
import java.io.BufferedReader;
import java.io.FileInputStream;

BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream("c:/javatest/url.txt")));

String line;

while((line = reader.readLine()) != null)

{

 readULR(line);

}

public void readURL(String adress)

{

 URL url = new Url(adress);

 BufferedReader urlReader = new BufferedReader(new InputStreamReader(url.openStream()));

 String line;

 while((line = urlReader.readLine()) != null)

 {

 if(line.indexOf("suchwortwort") \>= 0)

 {

 writeEmail();

 break;

 }

 }

}

Aber so gehts nicht, wenn ich das Compilieren will dann sagt er mir Fehler in der dritten Zeile: class or interface expected :frowning:

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Aber so gehts nicht, wenn ich das Compilieren will dann sagt
er mir Fehler in der dritten Zeile: class or interface
expected :frowning:

So kanns auch nicht gehen. Die fehlt die Klassendefinition, ne main-Funktion…
Ist jetzt nicht bös gemeint aber: Fang mal bitte klein an! Java-Buch --> HelloWorld-Beispiel --> Datei einlesen und Inhalt ausgeben, …

Java ist ne Programmiersprache die gelernt werden will. Auch wenn sie recht einfach ist (wenn man einmal die Grundzüge begriffen hat) muß man mit lernen anfangen. Komplette Codebeispiele helfen dir hier sicher nicht weiter…

Michael