bestimmten inhalt aus html code auslesen



  • Hallo!

    Ich hab ein problem. Und zwar will ich eine art programm schreiben, dass mir aus HTML code bestimmte sachen raussucht, ein wenig bearbeitet und die dann zusammen in eine neue Datei schreibt.
    Kurz gesagt, ich will ein programm schreiben, dass html code durchsucht und bestimmte dinge in BB-Code umwandelt. (diesen dann in eine textdatei oder was auch immer).
    So, das auslesen der HTML datei ist mir gelungen (mithilfe von libcurl). Jetzt hab ich den ganzen code in einer String.
    Aber ich weis einfach nicht wie ich das lösen soll, dass er den code nach bestimmten sachen absucht (z.B. eine bestimmte div) und diesen dann z.B. in ein neuen String kopiert 😕

    Wüsste da jemand eine möglichkeit?
    Ich hoffe ihr wisst was ich meine 😃

    lg

    P.S.: So sieht bisher mein grabbing code aus, vielleicht hilf es ja bei der Hilfe 😃

    std::string get_page( const char* url) 
    { 
    
    std::string result;
    CURL* easyhandle = curl_easy_init() ; 
    
    curl_easy_setopt( easyhandle, CURLOPT_URL, url ) ; 
    curl_easy_setopt(easyhandle, CURLOPT_WRITEDATA,&result);
    curl_easy_setopt(easyhandle,   CURLOPT_WRITEFUNCTION,&write_data);
    
    curl_easy_setopt(easyhandle, CURLOPT_TIMEOUT, 200);
    
    curl_easy_perform( easyhandle ); 
    curl_easy_cleanup( easyhandle ); 
    
    return result;
    }
    


  • bei sowas hilft dir denke ich "substring" weiter

    pos = str.find("live");    // position of "live" in str
      str3 = str.substr (pos);   // get from "live" to the end
    

    hier mal nen link dazu

    http://www.cplusplus.com/reference/string/string/substr/



  • Hi!

    Wenn das KEINE Programmierübung sein soll (um C++ zu lernen), dann würd ich dir abraten, das in C++ zu realisieren. Sowas geht viel schneller und einfacher in Perl, Ruby, Python... Die haben eine mächtige Regex-Engine zum parsen von Strings.

    Wollte nur meinen Senf dazugeben... 😉

    mfg bernd



  • ja sollte sowohl c++ übung sein (weil ich in diesem bereich bisher noch nicht sehr viel gemacht habe) als auch als normale exe verfügbar sein, weil es auch auf PC laufen wird, die warscheinlich kein perl, python etc haben.



  • Hy

    C0dR schrieb:

    ja sollte sowohl c++ übung sein (weil ich in diesem bereich bisher noch nicht sehr viel gemacht habe) als auch als normale exe verfügbar sein, weil es auch auf PC laufen wird, die warscheinlich kein perl, python etc haben.

    Da es ja eine C++ Übung ist, weiß ich leider nicht wie weit du bist, aber zum einen musst du auf RegEx nicht verzichtet, da könntest du dir die Boost.Regex-Klasse mal anschauen. Bzw. für solche "einfachen" Sachen benutzt ich Standardmässig sed und awk, sehr mächtige Werkzeuge und gibts auch als Windowsportierungen.

    Mfg Marco



  • ok, die klassen kannte ich bisher noch nicht, werde ich mir aber angucken.

    Habe es jetzt die ganze zeit mit den string funktionen (find, replace, etc) versucht, allerdings merke ich jetz, dass es nicht sehr einfach ist, einen teilbereich, z.B. innerhalb eines Divs, richtig zu erkennen und rauszulesen. Den anfang kann man ja noch identifizieren, da die divs benannt sind, aber das ende ist schwer, da es ja einfach mit </div> endet und das kommt öfters vor, so dass mir .find() recht wenig hilft.



  • Wie tief ist die Verschachtelung denn?

    <div id="one">One<div id="two">Two</div></div>
    

    Wenn du in dem Fall den Inhalt von one haben willst, musst du eben bis zum zweiten div lesen. Oder rückwärts lesen oder was weiß ich. Hängt vom konkreten Fall ab.



  • ja ist eigentlich immer nur ein div, keine verschachtelung 😞 das ist das problem


Anmelden zum Antworten