HTML Seite aufrufen und spiechern in C

Ich möchte gerne in meinem C-Programm eine Internetseite aufrufen und die Seite dann auch speichern (als html oder auch als txt).

Im IE bekomme ich mit dieser Funktion eine Seite angezeigt:
ShellExecute(NULL, TEXT(„open“), TEXT("http://www.fussball.de"), NULL, NULL, SW_SHOW);

Aber wie bekomme ich sie auf der Festplatte gespeichert?

Da git es viele Wege. Spontan fallen mir da
die guten alten Sockets ein. Das ist aber
sehr Low-Level-Mässig und daher etwas umständlich.

Elegant wäre der Weg über libCurl, da es hier offenbar
um Windows geht, sollte man sich die
entspechende Library für Win32 beschaffen.
Alles übrige zu diesem Weg liest man eben bei dem
Curl-Projekt nach.
Auf der Commandline gehts z.B. dann mit
curl http://www.fussball.de

Vielleicht kann man aber auch etwas mit dem Webbrowser-control vom Microsoft machen, hab ich aber noch nicht
probiert.

Oder mal über C++ nachdenken, da gibts dann auch Klassen die ein angenehmes Laden via HTTP-Connection
erlauben.

Hallo,

sorry, aber ich kenne mich in C nicht aus.

So weit ich das beurteilen kann, sind diese Programmaufrufe aus vielen Programmiersprachen sogenannte Kind- Befehle, das heißt, Du verlässt das eigentliche C- Programm. Damit gibt auch keine Möglichkeit mehr, etwas zu speichern. Aber das ist jetzt nur eine Vermutung, und es gibt sicher auch eine Lösung für dieses Problem.

Gruß

Hermann

Vielleicht ist das hier was für dich?

http://www.w3.org/Library/

Google wurde auch für dich erfunden!

Tosta

Hallo,
mit ShellExecute wirst Du das nicht hinbekommen.
Damit rufst Du ein anderes Programm auf und übergibst ihm einen Parameter, wie hier die Webseite.
Danach hast Du aber keinen Zugriff mehr auf die gestartete Komponente.

Welche Entwicklungsumgebung (Compiler) hast Du?

Für alles, was mit Internet zu tun hat, gibt es die Indy-Komponenten, die sind spite und sehr leicht zu handhaben. Schau mal hier:
http://www.indyproject.org/Sockets/index.DE.aspx

Gruß

Um eine Seite auf der Festplatte zu speichern ist etwas mehr Arbeit nötig, als nur einen Befehl aufzurufen: Zum einen muss die pure HTML Seite aufgerufen und analysiert werden. Dann müssen alle Resourcen sowie die verweisenden Resourcen (css->Bilder) ebenfalls geladen und gespeichert werden.
In einem zweiten Schritt müssen die Html Seite und die Resourcen eventuell noch angepasst werden, damit diese auf der Festplatte genauso aussehen wie in echt.
Soweit die groben Anforderungen.
Ich habe solch ein Programm für ein Unternehmen entwickelt, es hat etwa 10 PT gedauert und ich habe das mit Java und verschiedenen Libraries entwickelt. Wie man die gleiche Arbeit in C tun würde, weiß ich nicht. Ich würde mindestens C++ vorschlagen.
Tut mir leid, dass ich hier nur wenig weiterhelfen kann.

Hi!

Was tut dieser Befehl?

ShellExecute(NULL, TEXT(„open“),
TEXT("http://www.fussball.de"), NULL, NULL, SW_SHOW);

Er sagt dem System, es soll diese „Datei“ öffnen. Das System erkennt nun, dass dieser URL nicht zu einer Datei, sondern zu einer Webseite führt. Also wird das damit verbundene Programm geöffnet: Der Internet Explorer im vorliegenden Fall. (Im Anschluss ist nur noch der letzte Parameter für die Darstellung von belang, aber das interessiert uns dann doch nicht.)

Warum führe ich das noch einmal aus, obwohl du die Funktion zu kennen scheinst? Ich will damit deutlich machen, dass das System dir hierbei Arbeit sämtliche abnimmt, weil ein Browser installiert ist. Für das Speichern von Webseiten existiert nichts im System.

Welche Teile einer Webseite möchtest du denn speichern? Die reine HTML-Seite oder auch Elemente, die zusätzlich benötigt werden, wie das CSS-File, ausgelagerter Javascript-Code, Grafiken oder serverseitigen Programmcode? Wie sieht es mit einer Flash-Seite aus?
Du siehst, es ist längst nicht trivial und hängt davon ab, was du suchst.

Mein Vorschlag wäre: Nimm ein Programm, welches Webseiten herunterlädt und schau, ob du dieses mit deiner gewünschten Webseite aufrufen kannst. Wenn du etwas Derartiges gefunden hast, konfiguriere es entsprechend und benutze im Anschluss den Befehl shellexecute, nur dass diesmal der 3. Parameter der vollständige Pfad zu deinem Webseiten-Downloader ist und im 4. Parameter der URL steckt, der um eventuelle Befehlskürzel erweitert werden muss - das hängt vom Downloader ab.

Zu einem entsprechenden Downloader habe ich keine Empfehlung, hoffe aber, dass ich dir auch so weiterhelfen konnte.

gegrüßt!

Ganz lieben Dank für die vielfältigen Antworten.
Ich werde die Woche mal das ein oder andere austesten.