2016-07-05 18 views
-1

Ich habe es geschafft, einen Datei-Downloader in C++ zu erstellen (mit Winsock). Es lädt jede einfache Verbindung mit einer Datei wie: www.page.com/image.pngWie lautet die HTTP-Anforderung für die Seitenquelle?

Ich möchte es alle Bilder von einer ganzen Seite herunterladen, wie alle Bilder von einem 4chan Thread, aber ich weiß nicht, was ich in der HTTP-Anfrage senden sollte, um die Quelle der Seite zu bekommen. Wie kann ich die Quelle einer Webseite anfordern?

+1

Alles im Web ist "einfache Links". Die Seite, die Sie gerade ansehen? Kopieren Sie einfach die URL, fügen Sie sie in Ihr Programm ein und laden Sie sie herunter, und Sie haben die vollständige Quelle für die Seite. –

+2

Außerdem gibt es viele Programme, die bereits alles tun, was Sie scheinen wollen, dh zu einer URL gehen, die Seite abrufen, alle Bilder rekursiv herunterladen, usw. Beginnen Sie mit der Suche nach solchen Programmen, anstatt eigene zu schreiben, besonders seit das Parsen von HTML ist nicht einfach. –

Antwort

1

Sie senden nichts in der http Anfrage, in der Art, die Sie denken. Eine http Anfrage sendet eine einzelne Anfrage für ein einzelnes Dokument und gibt ein einzelnes Dokument vom Server zurück.

Um eine ganze Seite herunterzuladen, müssen Sie das heruntergeladene HTML-Dokument analysieren, alle relativen Links aus der HTML-Quelle extrahieren und dann eine separate http Anfrage für jedes Bild, css, js, etc ... referenzieren das Hauptdokument.

So können Tools wie wget's --recursive option ganze Seiten herunterladen.

0

Wenn die Seite an der Wurzel des http://www.page.com Server befindet, würden Sie eine GET Anfrage an den www.page.com Server senden für die / Ressource zu fragen:

GET/HTTP/1.1 
Host: www.page.com 

sagen Lassen Sie die Seite tatsächlich auf http://www.page.com/thepage.html befand. Sie würden eine GET Anfrage statt für /thepage.html fragen senden:

GET /thepage.html HTTP/1.1 
Host: www.page.com 

So oder so, würden Sie dann die resultierenden HTML analysieren müssen, um die einzelnen URLs aller <img>-Tags zu erhalten, die auf der Seite ist.