HTML-Seite parsen
-
Hallo,
ich habe vor, ein Programm zu schreiben, welches mir eine HTML-Seite nach Links und verschiedenen Tags durchparst, und diese in einer Variable speichert.
Das parsen will ich mit einer Regex erledigen, doch leider habe ich keine Ahnung wie das in C++ funktionieren soll. Habe zwar mal gegooglet und regex++ gefunden, doch irgendwie steige ich da nicht durch.Mein Ziel ist es, das ich einfach die HTML-Seite als string habe, dann eine regex drüberlaufen lasse, und überall da wo die Regex zutrifft, dieser Teil soll dann in ein array gespeichert werden. (siehe http://de3.php.net/manual/en/function.preg-match.php)
Wie könnte das funktionieren?Des Weiteren hätte ich noch gerne ein Klasse, welche mir eine url als string, in ihre einzelne Bestandteile unterteilt und in ein array schreibt. Wisst ihr da was?(siehe http://de3.php.net/manual/en/function.parse-url.php )

Ich hoffe ihr könnt mir weiterhelfen.
Grüsse Hegelbock
-
Vllt. hilft dir folgende Kurzeinführung (ist glaube ich teilweise von der Einführung in die regex Sachen von boost.org):
http://cplus.kompf.de/artikel/regex.html
Da parst der in einem Beispiel auch HTML-Tags.
Finde das nicht schwer zu bedienen, zumindest wenn man sich etwas mit RegEx aufkennt.
-
hegelbock schrieb:
Mein Ziel ist es, das ich einfach die HTML-Seite als string habe, dann eine regex drüberlaufen lasse, und überall da wo die Regex zutrifft, dieser Teil soll dann in ein array gespeichert werden. (siehe http://de3.php.net/manual/en/function.preg-match.php)
Wie könnte das funktionieren?Du kannst einfach die ganze Seite in ein std::string-Objekt einlesen und dann nach den entsprechenen Schlüsselworten mit der find-Methode suchen. Dabei musst du nur immer das neue Offset angeben, damit er bei nem Fund nicht wieder von vorne beginnt...aber das ja auch irgendwie klaro
.hegelbock schrieb:
Des Weiteren hätte ich noch gerne ein Klasse, welche mir eine url als string, in ihre einzelne Bestandteile unterteilt und in ein array schreibt. Wisst ihr da was?(siehe http://de3.php.net/manual/en/function.parse-url.php )

Auch das kannst du mit den oben gannten Methoden lösen, guck dir einfach mal die Klasse std::string an (
http://cppreference.com/cppstring/index.html).
-
@Vellas
Ok, das ist schonmal sehr praktisch. Habe dieses auch direkt mal installiert, doch irgendwie bekomme ich Fehlermeldungen. (Und zwar sobald ich eine Instanz von regex erzeuge) An was könnte das liegen?
Hier der Code und die Fehlermeldung:#include <boost/regex.hpp> using namespace boost; int main() { static const boost::regex e("\\u{1,3}-\\u{1,2} \\d{1,4}[ \\0]*"); return 0; }Um dies zu kompilieren führe ich folgenden Befehl aus:
g++ -I/sw/include -L/sw/lib regex.cppMeldung:
/usr/bin/ld: Undefined symbols: boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::do_assign(char const*, char const*, unsigned int) collect2: ld returned 1 exit status