PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : womit folgendes Projekt realisieren ?


evilhomer
2006-03-21, 11:35:32
Hallo,

ich will einen bot schreieben, der eine online datenbank absucht und die ergebnisse speichert. die datenbank kann einfach als html seiten betrachtet werden die per http requests abgefragt werden, und von mir dann geparst weden müssen. die seiten sind passwordgeschützt, also muss sich der bot vor dem abfragen einloggen können.

dass die aufgabe mit nahezu jeder programmiersprache mit enprechenden APIs bewerkstellig werden können ist mir auch klar. ich möchte mich aber auf das wesentliche konzentrieren und würde gerne was die hhtp kommunikation und session managment (cookies) auf möglichst einfache fertiglösungen zurückgreifen dazu wollt ich eure Meinung abfragen. welche Programmiersprache mit ensrpechenden komponenten haltet ihr am geignesten wenn man folgende gesichtspunkte berücksichtigt:

- möglichst unkpomlizierte und effektive (wär nicht schlecht wenn mehrere requests gleichzeitig laufen könnten) http kommunikation
- einfacher umgang mit cookies
- parsen von html seiten
- einfacher zugruff auf eine dabtenbank wie mysql oder access

ich hab erfahrung mit delphi, php, coldfusion und VB bin aber auch für alles andere offen (wenns unter windows läuft)

thx

mithrandir
2006-03-21, 12:35:10
Dere!

Ich habe für so etwas gute Erfahrungen mit dem HttpClient (Apache Jakarta Project) gemacht:
http://jakarta.apache.org/commons/httpclient/

Eine Post/Get-Methode wird im Java-Sourcecode einfach als Objekt angelegt, ausgeführt und das Ergebnis (ErrorCode und/oder HTML-Seite) kann einfach ausgewertet werden:
public void someSample()
{
HttpClient httpClient = new HttpClient();
httpClient.getState().setCookiePolicy( CookiePolicy.COMPATIBILITY );

DefaultMethodRetryHandler retryhandler = new DefaultMethodRetryHandler();
retryhandler.setRequestSentRetryEnabled( false );
retryhandler.setRetryCount( 3 );

GetMethod method = new GetMethod( "http://www.google.com" );
getmethod.setMethodRetryHandler( retryhandler );

// Execute the method.
int statusCode = httpClient.executeMethod( method );

if ( statusCode != HttpStatus.SC_OK )
{
writeLine( "URL konnte nicht aufgerufen werden: " + method.getStatusLine() );
}
else
{
writeLine( "HttpStatus ist OK!" );

String htmlCode = method.getResponseBodyAsString();
// ...
}
}

Das parsen koennte man mit einem vereinfachten XMLParser machen und auf MySQL und Access laesst sich sehr simpel via JDBC-Treiber zugreifen.

bye, Peter

domineushanas
2006-03-21, 14:36:57
auch fuer viele ander sachen gut...
www.perl.com

Coda
2006-03-21, 15:24:27
Alles andere als eine Scriptsprache ist dafür idiotisch. Perl oder Python sind bestimmt gut geeignet.

evilhomer
2006-03-23, 00:09:00
Alles andere als eine Scriptsprache ist dafür idiotisch. Perl oder Python sind bestimmt gut geeignet.

ja, Python wurde mit schon an anderer stelle vorgeschlagen, ich wollte mich dran versuchen jedoch bin ich bisjetzt nicht sehr weit gekommen. für den HTTP Klient wollt ich die Twisted bibliothek nemen, musste jedoch sehr schnell aufgeben, weil ich dazu so gut wie keine dokumentation finden konnte, tutorials die etwas über die absoluten grundlagen hinaus gingen gibt es anscheinend auch nicht. so weiss ich einfach nicht wie ich anfangen soll.
wenn mir also jemand seine Hilfe anbieten würde oder brauchbare infos zum thema hat, ich würd sie gerne annehmen.

auf den von mithrandir (danke übrigens für das beispiel) vorgeschlagenen Jakarta httpclient bin ich auch schon gestossen und dies scheint der besseren dokumentation wegen wirklich die bessere alternative zu sein.
ich habe mit java leider noch nichts zu tun gehabt, wie ikann ich am einfachsten eine Umgebung installieren sodass ich mit dem gannanten httpclient arbeiten kann? einfacj java jdk runterladen und notepad zum schreiben benutzen?

Shink
2006-03-23, 11:26:14
Ja, würd ich mir aber nicht antun, da es sehr schöne freie Java-IDEs gibt (JBuilder Personal, Netbeans, Eclipse) gibt.

mithrandir
2006-03-23, 13:48:31
Nimm Eclipse, das ist gerade sehr beliebt, ist auch regelmaessig auf vielen Heft-CDs enthalten (Java Magazin, etc.) und läuft unter Linux/UNIX genau so gut wie unter Windows.

Gast
2006-03-24, 22:22:08
Netbeans läuft auch überall und ist auch gut ;)

evilhomer
2006-04-03, 19:28:10
netbeams ist auch ne IDE für java?

HellHorse
2006-04-03, 21:20:04
netbeams ist auch ne IDE für java?
Ja, und sie kommt (mehr oder weniger direkt) von Sun. Und es gibt afaik sogar experimentellen C++ Support, keine Ahnung wie es mit anderen Sprachen aussieht.

Gast
2006-04-03, 21:55:35
Ja, und sie kommt (mehr oder weniger direkt) von Sun. Und es gibt afaik sogar experimentellen C++ Support, keine Ahnung wie es mit anderen Sprachen aussieht.
XHTML und CSS Syntaxhighlighting gibts, aber sonst siehts mager aus, ja ;)
Dann doch Eclipse?