Webcrawler
-
Hallo,
ich habe vor in C ein Webcrawler zu programmieren. Nur an der ersten Sache happert es schon bei mir. Ich weiß nämlich nicht, wie ich an der Quelltext einer Seite komme. Was wäre die beste Möglichkeit?
-
HTTP, würde ich sagen.
-
Und wie greife ich darauf zu? Was für ein befehl gibt es dafür?
-
Socket öffnen, zum Server connecten, den richtigen HTTP Befehl schicken, Daten empfängen, fertig... wie sonst
Wie wäre es, wenn du dir mal anguckst, was nen Browser sendet und wie das HTTP Protokoll aussieht.
-
Danke feigling für deine einigermassen normale antwort.
-
Also grob muss das so aussehen?
#include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <sys/socket.h> #include <netdb.h> #include <netinet/in.h> #include <arpa/inet.h> #include <unistd.h> #define BUFFER_SIZE 1024 int handling(int sock) { char buffer[BUFFER_SIZE]; int bytes; bytes = recv(sock, buffer, sizeof(buffer) - 1, 0); if (bytes == -1) return -1; buffer[bytes] = '\0'; printf("%s", buffer); return 0; } int main(int argc, char *argv[]) { int s; struct sockaddr_in srv; if (argc != 3) { fprintf(stderr, "usage: %s host port\n", argv[0]); return 1; } s = socket(AF_INET, SOCK_STREAM, 0); if (s == -1) { perror("socket failed()"); return 2; } srv.sin_addr.s_addr = inet_addr(argv[1]); srv.sin_port = htons( (unsigned short int) atol(argv[2])); srv.sin_family = AF_INET; if (connect(s, &srv, sizeof(srv)) == -1) { perror("connect failed()"); return 3; } if (handling(s) == -1) { fprintf(stderr, "%s: error in handling()\n", argv[0]); return 4; } close(s); return 0; }
Socket öffnen, zum Server connecten, <<<< das macht es ja jetzt
Nur wie das gehen soll, weiß ich nicht: den richtigen HTTP Befehl schicken, Daten empfängen.Ich sage schon mal danke im vorraus.
-
-
Welcher Code ist den besser dafür geeignet???