HTML-Seite parsen

Dieses Thema im Forum "C/C++" wurde erstellt von hegelbock, 18.10.2006.

  1. #1 hegelbock, 18.10.2006
    hegelbock

    hegelbock Grünschnabel

    Dabei seit:
    18.10.2006
    Beiträge:
    3
    Zustimmungen:
    0
    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 ) :D

    Ich hoffe ihr könnt mir weiterhelfen.
    Grüsse Hegelbock
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 Mµ*e^13.5_?¿, 18.10.2006
    Mµ*e^13.5_?¿

    Mµ*e^13.5_?¿ Routinier

    Dabei seit:
    21.02.2006
    Beiträge:
    453
    Zustimmungen:
    0
    Code:
    #include <sys/types.h>
    #include <regex.h>
    
    int regcomp(regex_t *preg, const char *regex, int cflags);
    int regexec(const  regex_t  *preg,  const  char *string, size_t nmatch,
                        regmatch_t pmatch[], int eflags);
    size_t regerror(int errcode, const regex_t *preg, char *errbuf,  size_t
                            errbuf_size);
    void regfree(regex_t *preg);
    Nähere informationen zu Benutzung sind zu finden unter "man 3 regex"
     
  4. theton

    theton Bitmuncher

    Dabei seit:
    27.05.2004
    Beiträge:
    4.820
    Zustimmungen:
    0
    Ort:
    Berlin, Germany
    pcre bietet hier auch sehr gute Möglichkeiten zur Nutzung von Perl-kompatiblen regulären Ausdrücken.
     
  5. #4 hegelbock, 19.10.2006
    hegelbock

    hegelbock Grünschnabel

    Dabei seit:
    18.10.2006
    Beiträge:
    3
    Zustimmungen:
    0
    @Mµ*e^13.5_?¿
    ok, nur wie benutze ich das jetzt?
    Könntest du mir ein kleines Beispiel geben? Am Besten eins, bei dem ich einen string, eine expression und das resultarray übergebe. Und die Übereinstummgen dann im resultarray stehen. :hilfe2:
    Danke schonmal.
     
  6. #5 Mµ*e^13.5_?¿, 19.10.2006
    Mµ*e^13.5_?¿

    Mµ*e^13.5_?¿ Routinier

    Dabei seit:
    21.02.2006
    Beiträge:
    453
    Zustimmungen:
    0
    Also ganz so einfach benutzt sich das nicht, ein Beispiel kann ich trotzdem geben.
    Code:
    #include <stdio.h>
    #include <regex.h>
    
    int main (int argc, char * argv[]) {
            int max_match = 10;
            char * regex;
            char * text;
            char errbuf[100];
            int result;
            regmatch_t pmatch[max_match];
            regex_t preg;
    
            if (argc > 2) {
                    regex = argv[2];
                    text = argv[1];
            }
            else {
                    regex = "a";
                    text = "Hallo Welt";
            }
    
            printf("regex: %s, string: %s\n", regex, text);
    
            result = regcomp(&preg, regex, 0);
            if (result != 0) {
                    regerror(result, &preg, errbuf, sizeof(errbuf));
                    printf("error:%s\n", errbuf);
                    return 1;
            }
            result = regexec(&preg, text, max_match, pmatch, 0);
            if (result != 0) {
                    regerror(result, &preg, errbuf, sizeof(errbuf));
                    printf("error: %s\n", errbuf);
                    return 1;
            }
            regfree(&preg);
    
            int i;
            for (i = 0; i < max_match; i++) {
                    if (pmatch[i].rm_so != -1) {
                            printf("fundstelle: %d\n", i+1);
                            printf("start: %d, end: %d\n", pmatch[i].rm_so, pmatch[i].rm_eo);
                    }
            }
            return 0;
    }
    Aber hör lieber auf theton und nimm pcre.
    Das ist glaub ich eher, das, was du suchst, ausserdem gibt es da auch einen netten c++-wrapper.
     
  7. #6 hegelbock, 19.10.2006
    hegelbock

    hegelbock Grünschnabel

    Dabei seit:
    18.10.2006
    Beiträge:
    3
    Zustimmungen:
    0
    GEIL! Das Script ist verdammt praktisch. VIELEN DANK!

    Den C++ Wrapper habe ich bereits schon probiert, leider bekomme ich immer ein Fehler beim linken. Mal schaun ob ich das noch hinbekomme. Aber ansonsten nehm ich das Script, das reicht mir von der Funktionalität eigentlich.
     
  8. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
Thema:

HTML-Seite parsen

Die Seite wird geladen...

HTML-Seite parsen - Ähnliche Themen

  1. Links aus HTML-Seite extrahieren

    Links aus HTML-Seite extrahieren: Hallo, ich möchte aus einer lokalen HTML-Datei bestimmte Links extrahieren. Die Vorgehensweise ist durch Aufgabenstellung vorgeschrieben: 1....
  2. HTML-Seite ohne Programmoberfläche anzeigen

    HTML-Seite ohne Programmoberfläche anzeigen: Guten Abend, ich möchte per Skript eine HTML-Seite anzeigen lassen, allerdings: - ohne Menu, Adressleiste, Tableiste oder ähnlichem - die...
  3. HTML-Seite als Desktop Hintergrund

    HTML-Seite als Desktop Hintergrund: Hallo, ich möchte auf meinem KDE Desktop eine dynamische HTML Seite als Hintergrund verwenden. (HTML Seite mit Bildern die alle 15 Sekunden...
  4. Mit awk ein textfile parsen und SQL daraus erzeugen.

    Mit awk ein textfile parsen und SQL daraus erzeugen.: Hallo, ich hab ein (Verständnis)Problem mit awk. Der Plan ist, mit einem cronjob (awk Einzeiler) aus einem textfile Werte in eine vorhandene...
  5. Problem mit cut... (kann man vllt von rechts parsen?)

    Problem mit cut... (kann man vllt von rechts parsen?): Hi, ich habe ein Textfile aus dem ich bestimmte Inhalte rausparsen möchte. Der Aufbau ist quasi so: A: USER B C D E (F) GIch brauche alle...