PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Sprache bzw. Skriptsprache fürs Parsen von Webseiten Einsatz in Matlab/Octave


pajofego
2009-07-27, 21:37:04
Hallo zusammen,

in Matlab/Octave lässt sich recht einfach externer C/C++ Code als sogenannte Mex Function einbinden. Solange "nur" mathematische Operationen/Aufgaben verwendet werden ist das für mich die Vorzugslösung. Nun muss ich eine Webseite auslesen, in der in einer Tabelle Werte eingetragen sind.

So zu meiner Frage: Welche Sprache, Skriptsprache oder sogar Bibliothek empfiehlt ihr mir um eine solche Aufgaben ohne viel Mühe erledigen zu können? Falls wichtig: Nur Linux basierte Lösungen sind von Interesse.

Danke und beste Gruesse
pajofego

Pinoccio
2009-07-27, 21:43:10
Je nach Komplexität kann Matlab ja auch ein wenig, ist aber durchaus seeehr mühsam.
(Wenn du das nur einmal machne musst udn eldiglich die Tabelle recht groß ist, ein regex-unterstützender Editor könnte auch helfen)
Ich behelfe mir da meist, in dem ich externe Dateien oftmals mit JAVA vorher umformatiere. Aber auch nur so, weil ich JAVA einigermaßen beherrsche. ;-) Allerdings nicht direkt aus Matlab heraus, wenn ich dich recht verstehe, ist es ja das, was du suchst. Es geht aber (http://nf.nci.org.au/facilities/software/Matlab/techdoc/matlab_external/ch_java.html) - mit neueren Version wohl recht einfach.

mfg

pajofego
2009-07-27, 22:03:45
Das Matlab und Java ganz gut miteinander können habe ich auch schon gehört. Problem ist nur, das ganze muss auch unter Octave laufen und da sieht's nach meinem Wissen nicht so rosig aus. Das Parsen der Tabelle wird mehrmals stattfinden. Meine Hoffnung waere eine bibliothek in C/C++ aber da frage ich mich wo komplex das ganze wird?!? Ich kenne aus C# bzw. Mono das Beispiel mit dem Befehl WebRequest um eine Seite zu parsen. Das ist schon ziemlich geschickt gelöst.

Pinoccio
2009-07-27, 22:15:25
Das Matlab und Java ganz gut miteinander können habe ich auch schon gehört. Problem ist nur, das ganze muss auch unter Octave laufen und da sieht's nach meinem Wissen nicht so rosig aus.Hm, dazu habe ich leider keinerlei Erfahrung.

mfg

Gast
2009-07-28, 11:58:54
Ruby hat doch für jeden Kram vorgefertigte Funktionalität.... vielleicht gibts da was passendes.

pajofego
2009-07-28, 21:35:45
boost::spirit ist soweit ich verstanden habe ein ganz maechtiger Parser. Jetzt brauechte ich noch eine Bibliothek die mir den Webrequest durchfuehrt?

Gast
2009-07-29, 08:14:15
Für Webrequests jeglicher Art kann ich dir cURL (http://curl.haxx.se/) empfehlen. Ist eine C-Library, aber es gibt so viel ich weiß auch einen C++ Wrapper dafür. Um die Library sinnvoll nutzen zu können, muss man lediglich eine Callback Funktion, die mit den empfangenen Daten umgeht, implementieren. Näheres dazu findet man aber schnell bei google.

universaL
2009-07-29, 18:54:25
ruby mit hpricot dürfte das ganze in wenigen zeilen erledigen :)

wie es mit der verbindung zu matlab/etc aussieht, weiss ich leider nicht.

Pinoccio
2009-07-29, 19:09:24
Ich hab heute mit MATLAB einige Sachen parsen müssen, mit der regexpi-Funktion (http://www.mathworks.com/access/helpdesk/help/techdoc/index.html?/access/helpdesk/help/techdoc/ref/regexpi.html) dürfte man auch Tabellen aus html-Dateien herausbekommen. (Wenn du da was brauchst -> PN)
Das Problem mit dem Webrequest wäre damit allerdings nicht gelöst. :-8

mfg

Coda
2009-07-29, 20:38:49
boost::spirit ist soweit ich verstanden habe ein ganz maechtiger Parser. Jetzt brauechte ich noch eine Bibliothek die mir den Webrequest durchfuehrt?
Das ist aber bei größeren Sachen äußerst müßig, weil die Compilierzeiten einem wirklich irgendwann auf die Nerven gehen ;)

Ich hab beim letzten Projekt dann doch einfach ANTLR benutzt, das hat auch eine schöne IDE für die Grammatik und ist LL(*). Erzeugt zur Zeit aber nur einen C-Parser. C++ ist noch in Entwicklung. Ist ja aber eigentlich egal.

pajofego
2009-07-29, 20:44:59
cURL werde ich auf jedenfall ausprobieren. Hab's schon mal installiert. Danach mal ein paar Beispiele durchspielen.

@coda: Das mit den ewigen Compilerzeilen unter Verwendung von Boost ist in der tat ein Thema. Benutze momentan sowieso für das gleiche Projekt eine Bibliothek, die ebenfalls Boost einsetzt. Schon witzig, wollte ein Thread hier starten wie man die Compilerzeit runterschrauben kann...und prompt ist es schon ein Thema? Geht das was eigentlich...ist schon nervig wie lange das dauert! :mad:

Coda
2009-07-30, 14:53:17
Precompiled Headers könnten evtl. helfen. Aber bei Spirit eher nicht ;)