Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Webseite speichern (https://www.delphipraxis.net/140494-webseite-speichern.html)

blooddog_90 19. Sep 2009 09:14


Webseite speichern
 
Hallo,

ich habe herausgefunden, wie ich den Quelltext einer Webseite speichern kann. Ja, aber bei einer HTML Seite sind ja noch die ganzen Tags mit drin. Gibt es eventuell auch die Möglichkeit, das was der Browser mir anzeigt als Text zu speichern? Ohne HTML Tags?
Also wenn ich jetzt hier meinen Thread runterladen will, sollte er einfach jeglichen Text speichern. D.h. ohne den DP-Header und der Link: DelphiPraxis soll ohne Verlinkung dastehen.
Da muss ich gleich mal fragen: Heißt parsen, dass der Browser HTML Tags umwandelt?
Und die wichtigere Frage: Gibt es eine Lösung für mein Problem :-D ?

Vielen Dank. Schönes Wochenende wünsch ich euch.

Die Muhkuh 19. Sep 2009 09:18

Re: Webseite speichern
 
Der Browser parst, wie Du schon geschrieben hast, eine HTML-Datei und stellt die Tags entsprechend als das dar, was Du siehst.

Du könntest, wenn Du den Text haben willst, ganz simpel alle Tags entfernen, allerdings bleibt dann auch viel Zeug über, dass Du gar nicht haben willst.

Wenn es sich um eine bestimmte Seite handelt, kannst Du es per Pos und Copy bestimmte Texte entnehmen.

Sollte das ganze allerdings generisch funktionieren, schaut es schlecht aus. Wenn Du wirklich das willst, was der Browser Dir anzeigt, könntest einfach die HTML-Datei downloaden (also das, was Du bisher geschafft hast) und stellst diese in einem TWebBrowser dar.

RWarnecke 19. Sep 2009 09:34

Re: Webseite speichern
 
Schaue Dir mal diesen Tipp von den Schweizern an, der könnte Dein Problem lösen.

blooddog_90 19. Sep 2009 14:48

Re: Webseite speichern
 
Was macht denn diese Zeile hier:
Delphi-Quellcode:
Application.ProcessMessages;

Bitwurm 19. Sep 2009 15:31

Re: Webseite speichern
 
Hi blooddog_90,

auf deine Frage, was folgender Codeschnipsel macht.

Code:
Application.ProcessMessages;
Sicher wirst du im Internet und auch hier im Forum viel darüber finden. Von mir eine kleine Zusammenfasung:

Fast alles unter Windows ist ein Fenster. Jedem Fesnter kann man Nachrichten (Message; TMessage) senden.
Ein Fenster kann nun auf solche Nachrichten reagieren und bestimmte Aktionen ausführen (minimieren, maximieren, etc.).
Diese Nachrichten werden in einer Warteschlange (Queue) gehalten.

In vielen Fällen hast du in deiner Anwendung nur einen Thread (main-Thread).
In diesem Thread wird dann auch deine Nachrichten- Warteschlange abgearbeitet.
Wenn du nun lange oder zeitaufwendige Berechnungen durchführst, hat dein Thread "keine Zeit" die Warteschlange abzuarbeiten.

Ein Beispiel:
Code:
while(true)do
begin
  //TODO: Hier steht deine lange Berechnung
end;
Eigentlich ist das "nicht- abarbeiten" kein großes Problem. Unschön ist dagegen,
dass deinen Anwendung dann im Titel "Anwendung reagiert nicht" (oder ähnlich) trägt
oder du deine Anwednung nicht mehr verschieben kannst. (Diese Aktionen werden dem Fenster durch Nachrichten mitgeteilt.)

Um nun dem Fenster die Möglichkeit zu geben, doch noch an die Warteschlange zu kommen, gibt es den Befehl:
Code:
Application.ProcessMessages;

Das Thema ist eigentlich ziemlich komplex. Ich habe versucht es auf ein Minimum zu reduzieren.
Wenn dich das Thema interessiert, wirst du unter Suchergebnis noch eine Menge finden.


Lg
Sebastian


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:46 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz