Moeglichkeiten, eine Internetseite zu bekommen



  • Tagchen, ich bin recht neu bei C++, ich kann zwar recht gut Java, aber da ist man ja auch arg verwoehnt.

    Ich moechte eine Internetseite (http://bla.tld/show.php?id=123456) und suche nun nach der besten Moeglichkeit.

    Das System drunter ist ein Debian Sid, ich hab also wohl einige Moeglichkeiten

    Meine Frage: was ist fuer diesen Zweck die einfachste/guenstigste Moeglichkeit?
    in cURL lese ich mich gerade ein, aber bei den Beispielen haperts nich bissel...
    laut meinem IT-Lehrer sind sockets in C(++) eine haessliche Angelegenheit, stimmt das?

    Shell-Aufrufe (wget, curl...) moechte ich lieber nicht machen 😉

    Was ist die beste Methode? rein in eine temporaere Datei? alles im Speicher (nach http://curl.haxx.se/lxr/source/docs/examples/getinmemory.c)? Ich moechte die Seite spaeter parsen, unter php und java hab ich die sachen meistens einfach als String in eine Variable rein...

    C167



  • hm du willst also ne page mit c++ machen.
    Dann brauchst:
    http protokoll http://tools.ietf.org/html/rfc2616
    sockets http://www.c-worker.ch

    Viel Spaß ist imho unsinnig bleib lieber bei php oder so der aufwand lohnt sich nicht, vorallem wenn du noch ein anfänger bist.

    mfg tobZel



  • nee, ich will ne Seite aus dem Internet runterladen 😉
    die wird dann geparsed (mit bissel glueck find ich nen XML-Parser der den verbuggten output aus Berkeley filtert) und formatiert angezeigt werden 😉 dazu muss ich erstmal die daten bekommen

    das RFC kenne ich, wir ham in der Schule mal nen kleinen Browser in Java geschrieben (bzw. den HTML-code angezeigt) und auch schon kleinere Server ueber den ServerSocket aufgebaut.
    der zweite Link nuetzt mir nicht viel, da ich auf Linux programmiere 😉

    trotzdem Danke

    C167



  • Und wie glaubst du kannst du den Inhalt der Seite bekommen ohne sie downzuloaden? Also ohne HTTP wird da nicht viel laufen.

    Unter Windows hast du die praktische Methode SHGetHttpFile oder so ähnlich, vll bietet Linux auch was Ähnliches...aber grundsätzlich Socket + HTTP + GET ... + Ergebnis parsen und Seiteninhalt in String schreiben.

    MfG SideWinder



  • deshalb suche ich ja nach der besten/einfachsten moeglichkeit. Einzig Shellaufrufe moechte ich nicht machen.

    in die libcurl lese ich mich gerade ein, aber selbst die Beispiele lassen sich nicht durchcompilieren:

    #include <stdio.h>
    #include <curl/curl.h>
    int main(void)
    {
      CURL *curl;
      CURLcode res;
      curl = curl_easy_init();
      if(curl) {
        curl_easy_setopt(curl, CURLOPT_URL, "curl.haxx.se");
        res = curl_easy_perform(curl);
        /* always cleanup */
        curl_easy_cleanup(curl);
      }
      return 0;
    }
    
    gcc simple.c -o simple
    /tmp/ccP54ISE.o: In function `main':
    simple.c:(.text+0x12): undefined reference to `curl_easy_init'
    simple.c:(.text+0x36): undefined reference to `curl_easy_setopt'
    simple.c:(.text+0x41): undefined reference to `curl_easy_perform'
    simple.c:(.text+0x4f): undefined reference to `curl_easy_cleanup'
    collect2: ld gab 1 als Ende-Status zurück
    


  • Den Fehlermeldungen nach zu urteilen hast Du die libcurl-Bibliothek nicht mit verlinkt.

    PS: Ups, jetzt sehe ich erst den Compileraufruf. Ja, da fehlen die Linkerangaben.



  • hm... normalerweise arbeite ich mit eclipse/cdt und der managed-make modus sollte den mist finden... okay, nun ist mir klar warum das nicht funktionieren kann, nur wie sage ich das dem linker?



  • schau mal hier, ein wunderschöner beitrag, mit c++ und sockets zu arbeiten...
    http://www.c-plusplus.net/forum/viewtopic-var-t-is-169861.html
    kannst du gerne deinem lehrer mitgeben 😉



  • ach ja, und linken mit

    gcc ..... -lcurl



  • elise schrieb:

    schau mal hier, ein wunderschöner beitrag, mit c++ und sockets zu arbeiten...
    http://www.c-plusplus.net/forum/viewtopic-var-t-is-169861.html
    kannst du gerne deinem lehrer mitgeben 😉
    ach ja, und linken mit

    gcc ..... -lcurl

    vielen Dank 🙂
    der thread is schon im drucker und nu funktioniert endlich *jubel* der erste download einer Internetseite 🙂
    kann ich also mit -l<ordnername in /usr/include/> beliebige sachen linken?

    C167



  • C167 schrieb:

    elise schrieb:

    schau mal hier, ein wunderschöner beitrag, mit c++ und sockets zu arbeiten...
    http://www.c-plusplus.net/forum/viewtopic-var-t-is-169861.html
    kannst du gerne deinem lehrer mitgeben 😉
    ach ja, und linken mit

    gcc ..... -lcurl

    vielen Dank 🙂
    der thread is schon im drucker und nu funktioniert endlich *jubel* der erste download einer Internetseite 🙂
    kann ich also mit -l<ordnername in /usr/include/> beliebige sachen linken?

    C167

    bibliotheken kannst du linken.
    beliebig sicher nicht 😉
    les zu den sachen bitte das jeweilige faq! dort wird dir mitgeteilt, wies geht.
    siehs als ... gebrauchsanweisung, auch libcurl hat sowas .. (readme, documentation, faq)


Anmelden zum Antworten