Text aus einer Website lesen



  • Er hat aber keine andere Wahl, den Quelltext einer Webseite zu emfangen, ist die einzige Möglichkeit (zumindest in C/C++; möglicherweise gibt es in anderen höheren Sprachen eine Objektorientierte Lösung). Die Mühe, daraus einen formatierten Text zu machen, mus er sich schon selbst machen...



  • Das mag sein; seine Frage war ja, ob es geht, ohne aus dem Quelltext zu lesen. Du hast ihm zwar erklärt, wie er den Quelltext erhält, aber ohne speziell zu sagen, dass es mit C/C++ nicht möglich ist, es anders zu realisieren, als den Quelltext auszulesen. 🙂
    Ob esm it einer höheren Sprache möglich ist, weiß ich auch nicht ...



  • oggs_the_progger schrieb:

    Als Beispiel auf der C-plusplus seite ➡
    oben rechts steht das wort "startseite"

    Hallo ? Rechts ist da, wo der Daumen links ist !

    oggs_the_progger schrieb:

    nun möchte ich die nächsten 5 zeichen in mein programm einlesen, also sollte ich in meinem progg dann "Links" stehen haben

    Hallo ? Die nächsten 5 Zeichen sind: Modul
    Nr.1: 'M', Nr.2: 'o', Nr.3: 'd', usw.

    long long double schrieb:

    Ob esm it einer höheren Sprache möglich ist, weiß ich auch nicht ...

    Nein, selbst dann nicht, wenn die Sprache 1798,67 Meter hoch ist.
    Wie denn auch, die Seite liegt im Html-Format vor.
    Wenn, dann ginge es mit einer Bibliothek, die dir die Seite runterlädt und entsprechend in die einzelnen Bestandteile zerlegt.
    (Links, Text, Bilder, usw. )

    MfG MfG



  • MfG schrieb:

    long long double schrieb:

    Ob esm it einer höheren Sprache möglich ist, weiß ich auch nicht ...

    Nein, selbst dann nicht, wenn die Sprache 1798,67 Meter hoch ist.

    Was ein Scherz ...

    MfG schrieb:

    long long double schrieb:

    Ob esm it einer höheren Sprache möglich ist, weiß ich auch nicht ...

    Wenn, dann ginge es mit einer Bibliothek, die dir die Seite runterlädt und entsprechend in die einzelnen Bestandteile zerlegt.
    (Links, Text, Bilder, usw. )

    Das ist die Frage.



  • IHTMLDocument2::get_links

    Viel "Spass" damit (igitt)

    MfG bäääääääääh



  • DOM, XPath, ga gibt's viele Möglichkeiten.



  • Hi,
    Ich möchte auch eine Webiste einlesen jedoch den Source Code!
    Ich habe das Tut von c-worker durch und es so gemacht wie beschrieben doch er bleibt beim empfangen stehen 😞
    Code:

    memset(&addr,0,sizeof(SOCKADDR_IN));
    addr.sin_family=AF_INET;
    addr.sin_port=htons(80);
    addr.sin_addr.s_addr=inet_addr("google.de");
    rc=connect(s,(SOCKADDR*)&addr,sizeof(SOCKADDR));
    if(rc==SOCKET_ERROR)
    {
    goto restart;
    }
    for(;;)
      {
        strcpy(buf,"GET / HTTP/1.1[crlf]Host: www.google.de[crlf][crlf]");
       send(s,buf,strlen(buf),0);
        rc=recv(s,buf,256,0);
        if(rc==0)
        {
          printf("Server hat die Verbindung getrennt..\n");
          break;
        }
        if(rc==SOCKET_ERROR)
        {
          printf("Fehler: recv, fehler code: %d\n",WSAGetLastError());
          break;
        }
        buf[rc]='\0';
        printf("%s\n",buf);
      closesocket(s);
      WSACleanup();
    }
    

    Warum tut sich da nichts?
    Also senden tut er nur beim empfangen bleibt er stehen!

    MFG ReduX 🙂



  • Dein Fehler liegt ganz einfach daran, dass du der Funktion inet_addr() "google.de" übergibst. Die Funktion erwartet aber eine IP-Adresse (in dem Fall 209.85.135.99).
    Ansonsten muss du die Funktion gethostbyname() verwenden.
    Hier mal ein Beispiel, bei dem Beide Möglichkeiten(Hostname/IP) funktionieren:

    #include <winsock2.h>
    #include <stdio.h>
    
    #define BSIZE 256
    
    int main(int argc,  char **argv)
    {
        long rc;
        SOCKET s;
        SOCKADDR_IN addr;
        char buf_in[BSIZE], buf_out[BSIZE];
        WSADATA wsa;
        HOSTENT *hent;
    
        char *host="www.google.de";
    
        memset(&addr, 0, sizeof(SOCKADDR_IN));
        addr.sin_family=AF_INET;
        addr.sin_port=htons(80);
    
        if(WSAStartup(MAKEWORD(2, 0), &wsa))
        {
            printf("Winsock konnte nicht gestartet werden. Fehler: %d\n", WSAGetLastError());
            return 1;
        }
        else printf("Winsock gestartet!\n");
    
        if((s=socket(AF_INET, SOCK_STREAM, 0))==INVALID_SOCKET)
        {
            printf("Socket konnte nicht erstellt werden. Fehler: %d\n", WSAGetLastError());
            return 1;
        }
        else printf("Socket erstellt!\n");
    
        if((addr.sin_addr.s_addr=inet_addr(host))==INADDR_NONE)
        {
            if(!(hent=gethostbyname(host)))
            {
                printf("Host nicht gefunden. Fehler:", WSAGetLastError());
                return 1;
            }
    
                strncpy((char*)&addr.sin_addr.s_addr, hent->h_addr, 4);
    
            if(addr.sin_addr.s_addr==INADDR_NONE)
            {
                printf("Host nicht gefunden. Fehler:", WSAGetLastError());
                return 1;
            }
        }
    
        if((rc=connect(s, (SOCKADDR*)&addr, sizeof(SOCKADDR)))==SOCKET_ERROR)
        {
            printf("Verbindung konnte nicht hergestellt werden. Fehler: %d\n", WSAGetLastError());
            return 1;
        }
        else printf("Verbunden mit %s\n", host);
    
        sprintf(buf_out, "GET / HTTP/1.1\r\nHost:www.google.de\r\nConnection:close\r\n\r\n");
        send(s, (char *)buf_out, strlen(buf_out), 0);
        while(rc=recv(s, buf_in, BSIZE, 0))
        {
            buf_in[rc]=0;
            printf("%s", buf_in);
        }
    
        getchar();
    
        closesocket(s);
        WSACleanup();
    
        return 0;
    }
    

    mfg, loose



  • Hi,
    Danke für deine Antwort!
    Es funktioniert so weit 🙂
    Nur wie bekomme ich es hin den Quelltext von bestimmten files zu holen z.b. von test.htm.
    Bei der Anfrage habe ich Probeweiße einfach den Datei namen hintendrann geschrieben
    Doch dann meldet der Server Falsche anfrage!
    Meine Frage deshalb wie lautet die Anfrage um gezielt dateien zu lesen?

    MFG ReduX



  • Wenn du beispielsweise, das Logo von Google herunterladen willst(http://www.google.de/intl/de_de/images/logo.gif), sendest du folgenden HTTP-Request:

    GET /intl/de_de/images/logo.gif HTTP/1.1
    Host:www.google.de
    Connection:close

    Dann bekommst du in etwa folgende Antwort:

    HTTP/1.1 200 OK
    Content-Type: image/gif
    Last-Modified: Wed, 07 Jun 2006 19:40:07 GMT
    Expires: Sun, 17 Jan 2038 19:14:07 GMT
    Server: GWS/2.1
    Content-Length: 9121
    Date: Wed, 18 Jul 2007 14:25:40 GMT

    GIF89...(hier folgt die GIF-Graphik)

    Bei Wikipedia(http://de.wikipedia.org/wiki/Http) findest du weitere Infos zum HTTP.

    mfg, loose


Anmelden zum Antworten