Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Quelltext einer Seite runterladen (https://www.delphipraxis.net/20844-quelltext-einer-seite-runterladen.html)

Die Muhkuh 24. Apr 2004 10:20


Quelltext einer Seite runterladen
 
Hi,


ich möchte den Quelltext einer Seite herunterladen um aus dem Quelltext eine bestimme Zeile zu kopieren, die Seite um die es sich handelt ist www.wetter.de -> Vielleicht merken schon einige was ich vor hab: Quelltext runterladen -> Wetterdaten auslesen.
Ich möchte die Daten von der Statischen Seite einlesen und nicht von der FlashSeite.

Mein Quelltext denn ich schon hatte:

Delphi-Quellcode:
FileStream := TFileStream.Create('C:\Wetter.html', fmCreate);
      try
        HTTP.Get('http://wetter.rtl.de/static/index_ok.php', FileStream);
      finally
        FileStream.Free;
      end;
Geht aber nicht da die Seite PHP ist.

Vielleicht weiß jemand da was.

a.vollmer 24. Apr 2004 10:24

Re: Quelltext einer Seite runterladen
 
Delphi-Quellcode:
str := idhttp1.get('http://www.wetter.de/balbal.php');
Wieso machst du das per FileStream?

Und daten aus wetter.de parsen ist nicht erlaubt...nur mal so!

Alex

S2B 24. Apr 2004 10:24

Re: Quelltext einer Seite runterladen
 
Also wenn man aus einem TWebBrowser den Quelltext der Seite speichern will, dann geht das so:
Delphi-Quellcode:
 //Code auslesen:
function WB_SaveHTMLCode(WebBrowser: TWebBrowser; const FileName: TFileName): Boolean;
var
  ps: IPersistStreamInit;
  fs: TFileStream;
  sa: IStream;
begin
  ps := WebBrowser.Document as IPersistStreamInit;
  fs := TFileStream.Create(FileName, fmCreate);
  try
    sa := TStreamAdapter.Create(fs, soReference) as IStream;
    Result := Succeeded(ps.Save(sa, True));
  finally
    fs.Free;
  end;
end;
Vielleicht kannst du ja den Code entsprechend abändern... Hoffe es bringt dich weiter.

Die Muhkuh 24. Apr 2004 10:24

Re: Quelltext einer Seite runterladen
 
Zitat:

Zitat von a.vollmer
Delphi-Quellcode:
str := idhttp1.get('http://www.wetter.de/balbal.php');
Wieso machst du das per FileStream?

Und daten aus wetter.de parsen ist nicht erlaubt...nur mal so!

Alex

Ui, danke. Wo könnte ich den sonst Wetterdaten legal herbekommen?

a.vollmer 24. Apr 2004 10:26

Re: Quelltext einer Seite runterladen
 
http://www.rssweather.com/


Gibt es auch Wetterdaten für Deutschland...

Gruß

Alex

Die Muhkuh 24. Apr 2004 10:28

Re: Quelltext einer Seite runterladen
 
@S2B,

ne ich hab keinen Webbrowser. Trotzdem danke.

@Alex

danke ich guck mal.

Die Muhkuh 24. Apr 2004 10:31

Re: Quelltext einer Seite runterladen
 
@Alex

hmm leider nicht ganz. Es sollte schon eine Seite auf deutsch sein.


Um wieder zum Thema zurückzukommen:

Der Code geht auch nicht:

Delphi-Quellcode:
Temp := HTTP.Get('http://wetter.rtl.de/static/index_ok.php');

      Temp := Copy(Temp, Pos('<td valign="top" width="435" colspan="3"> ', Temp),
                Pos(' </td>', Temp));
(Ja ich weiß, ich bin immer noch auf wetter.de) :?

a.vollmer 24. Apr 2004 10:43

Re: Quelltext einer Seite runterladen
 
was daran geht nicht?


übrigens wirst du auf der startseite auch nicht viel finden, was wetterdaten betrifft!

Alex

P.S. Wenn du die Daten sowieso parsen willst, wieso nimmst du dann nicht rssweather.com! du musst doch nur die Gradzahl sowie wetterdaten parsen ...der englische text drum rum ist doch egal!

Die Muhkuh 24. Apr 2004 10:46

Re: Quelltext einer Seite runterladen
 
Zitat:

Zitat von a.vollmer
was daran geht nicht?


übrigens wirst du auf der startseite auch nicht viel finden, was wetterdaten betrifft!

Alex

P.S. Wenn du die Daten sowieso parsen willst, wieso nimmst du dann nicht rssweather.com! du musst doch nur die Gradzahl sowie wetterdaten parsen ...der englische text drum rum ist doch egal!

Was nicht geht:

Er zeigt nix an.


zum PS: hmm stimmt auch wieder

Wheelie 24. Apr 2004 11:48

Re: Quelltext einer Seite runterladen
 
Vielleicht hilft dir diese Funktion hier:
Delphi-Quellcode:
Function GetHTML(AUrl: string): string;
var
  databuffer : array[0..4095] of char;
  ResStr : string;
  hSession, hfile, hRequest: hInternet;
  dwindex,dwcodelen,datalen,dwread,dwNumber: cardinal;
  dwcode : array[1..20] of char;
  res   : pchar;
  Str   : pchar;
begin
  ResStr:='';
  if pos('http://',lowercase(AUrl))=0 then
     AUrl:='http://'+AUrl;
  hSession:=InternetOpen('InetURL:/1.0',
                         INTERNET_OPEN_TYPE_PRECONFIG,
                         nil,
                         nil,
                         0);
  if assigned(hsession) then
  begin
    hfile:=InternetOpenUrl(
           hsession,
           pchar(AUrl),
           nil,
           0,
           INTERNET_FLAG_RELOAD,
           0);
    dwIndex := 0;
    dwCodeLen := 10;
    HttpQueryInfo(hfile,
                  HTTP_QUERY_STATUS_CODE,
                  @dwcode,
                  dwcodeLen,
                  dwIndex);
    res := pchar(@dwcode);
    dwNumber := sizeof(databuffer)-1;
    if (res ='200') or (res ='302') then
    begin
      while (InternetReadfile(hfile,
                              @databuffer,
                              dwNumber,
                              DwRead)) do
      begin
        if dwRead =0 then
          break;
        databuffer[dwread]:=#0;
        Str := pchar(@databuffer);
        resStr := resStr + Str;
      end;
    end
    else
      ResStr := 'Status:'+res;
    if assigned(hfile) then
      InternetCloseHandle(hfile);
  end;
  InternetCloseHandle(hsession);
  Result := resStr;
end;
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  Memo1.Text := GetHTML('http://wetter.rtl.de/static/index_ok.php');
end;

Die Muhkuh 24. Apr 2004 16:42

Re: Quelltext einer Seite runterladen
 
Hi :stupid: ,

leider kennt er bei mir folgende Sachen nicht:

hInternet
InternetOpen
INTERNET_OPEN_TYPE_PRECONFIG

Meflin 24. Apr 2004 16:49

Re: Quelltext einer Seite runterladen
 
in der delphi-source library gibt es zwei tipps: einen, um den quelltext eines browsers abzuspeichern, und einen, um das zeugs in plaintext umzuwandeln. dass funzt und sollte auf alle fälle dein problem lösen!

Matze 24. Apr 2004 16:52

Re: Quelltext einer Seite runterladen
 
Zitat:

Zitat von Spider
Hi :stupid: ,

leider kennt er bei mir folgende Sachen nicht:

hInternet
InternetOpen
INTERNET_OPEN_TYPE_PRECONFIG

Delphi-Quellcode:
uses WinInet
nicht vergessen ;)

Die Muhkuh 25. Apr 2004 06:36

Re: Quelltext einer Seite runterladen
 
Zitat:

Zitat von Matze
Zitat:

Zitat von Spider
Hi :stupid: ,

leider kennt er bei mir folgende Sachen nicht:

hInternet
InternetOpen
INTERNET_OPEN_TYPE_PRECONFIG

Delphi-Quellcode:
uses WinInet
nicht vergessen ;)

Thanks.

DracoBlue 28. Apr 2004 15:32

Re: Quelltext einer Seite runterladen
 
Wie baue ich da jetz nen progressbar-update mit rein?

Müsste doch irgendwo stehen wie weit der download grade ist, oder?

MfG, Draco

faux 30. Apr 2004 13:48

Re: Quelltext einer Seite runterladen
 
Zitat:

Zitat von S2B
Also wenn man aus einem TWebBrowser den Quelltext der Seite speichern will, dann geht das so:
Delphi-Quellcode:
 //Code auslesen:
function WB_SaveHTMLCode(WebBrowser: TWebBrowser; const FileName: TFileName): Boolean;
var
  ps: IPersistStreamInit; //***************In welcher Unit is denn IPersistStreamInit??
  fs: TFileStream;
  sa: IStream; //***************Und IStream's Unit kann ich auch nicht finden... :?
begin
  ps := WebBrowser.Document as IPersistStreamInit;
  fs := TFileStream.Create(FileName, fmCreate);
  try
    sa := TStreamAdapter.Create(fs, soReference) as IStream;
    Result := Succeeded(ps.Save(sa, True));
  finally
    fs.Free;
  end;
end;
Vielleicht kannst du ja den Code entsprechend abändern... Hoffe es bringt dich weiter.


yankee 1. Mai 2004 20:56

Re: Quelltext einer Seite runterladen
 
Also ich habe in letzter Zeit etwas PHP geprogt und sage dir, das kann NICHT daran liegen, dass die Seite PHP ist, da PHP auf dem Server ausgeführt wird.
In einem anderen Thread habe ich mal gelesen, dass bei einigen Server die Indy-Komponenten gesperrt sind.
Es gibt da aber 'ne Option, wie du verändern kannst, als was sich die Kompo identifiezierst. Ich finde nur den anderen Thread nicht mehr (zumal ich mir nicht ganz sicher bin, ob das überhaupt in der DP war) und ich habe vergessen, wie die Eigenschaft heißt. Vielleicht weiß es ja hier einer. Aber moment, da muss ich mal was ausprobieren... Ich schreibe gleich nochmal ein edit...

EDIT: Ich habe mal meinen das was du mit wetter.de gemacht hast, mit meinem eigenen Server gemacht und zwar auch mit einer PHP-Seite. Und es hat wundervoll geklappt. Es liegt also DEFINITIV NICHT an PHP!!!

yankee 1. Mai 2004 21:04

Re: Quelltext einer Seite runterladen
 
So, jetzt weiß ich was du falsch gemacht hast: RICHTIG:

memo1.text :=idHTTP1.Get('http://wetter.rtl.de/static/index_ok.php');

Dann funzt es auch!


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:06 Uhr.

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