![]() |
Stream Unvollständig?
Hallo,
beim Versuch Daten einer Webseite auszulesen stoße ich auf Schwierigkeiten. Ich nutze momentan die idHttp von Indy um dies zu erreichen. also Quasi:
Delphi-Quellcode:
Das Funktioniert soweit ganz gut nur nicht auf allen Seiten. Beim Test mancher Seiten z.B.:
idhttp := TIdHTTP.Create(nil);
SourceCode := idhttp.Get(EdtURL.Text); Memo1.text := SourceCode; IdHTTP.Free; ![]() Bei dieser Seite bekomme ich mit eben gezeigtem Quellcode einen 'HTTP/1.1 400 Bad Request' Fehler während der .Get() Funktion. Da ich auf diesem Weg nicht weitergekommen bin habe ich es anders Versucht. Mit diesem Tutorial ![]() Mit Folgendem Code befülle ich dann mein memo:
Delphi-Quellcode:
Das klappt auf allen Seiten auch ganz gut, nur wieder auf dieser einen Nasdaq Seite nicht. Ich bekomme zwar Teile des Quellcodes der Webseite, jedoch kein Stück vom eigentlichen Inhalt, nur Übergeordnete HTML Struckturen :/
procedure TForm1.Button1Click(Sender: TObject);
var jValue:TJSONValue; begin RESTRequest1.Execute; jValue:=RESTResponse1.JSONValue; MemoContent.Text:= jValue.ToString; end Zum Vergleich. Mit der REST-Methode bekomme ich etwa 2200 Zeilen von der Nasdaq Webseite. Mit einer C# Methode bekomme ich den Kompletten Quelltext mit etwa 3600 Zeilen. C# Code hier:
Code:
Weiß jemand was ich in Delphi falsch mache, bzw. was ich tun muss um alle Daten von dieser Webseite zu bekommen?
using System.Net;
using System.IO; using System.Web; namespace WindowsFormsApplication1 { public partial class Form1 : Form { private void button1_Click(object sender, EventArgs e) { WebClient web = new WebClient(); Stream stream = web.OpenRead("http://www.nasdaq.com/symbol/aapl/real-time"); using (StreamReader reader = new System.IO.StreamReader(stream)) { richTextBox1.Text = reader.ReadToEnd(); } } Danke schonmal im Vorraus. |
AW: Stream Unvollständig?
Du solltest zuerst mal herausfinden, ob die Webseite überhaupt ohne JavaScript die gewünschten Daten ausliefern kann.
Heutzutage sind die meisten Webseiten auf JavaScript angewiesen. Ausserdem musst du damit rechnen, dass nasdaq.com sich jederzeit ändern kann und damit deine Bemühungen die Aktienkurse auszulesen zunichte macht. Es gibt auch Webseiten/services die Aktionkurse im XML, JSON oder CSV-Format ausliefern. Aber du wirst diese Daten wahrscheinlich nirgends umsonst bekommen; insbesondere wenn es Echtzeitdaten sind. |
AW: Stream Unvollständig?
Vielleicht müssen erst alle Cookies von nasdaq.com gelöscht werden, um in kürzeren Abständen neue Daten zu laden.
Suchfeld “Temporary Internet Files”. Click “Browserverlauf löschen” Oder:
Delphi-Quellcode:
Ausserdem:
program Delete_IE_Cache;
uses WinInet; {sc----------------------------------------------------------------------- Name: DeleteIECache Parameters: - -----------------------------------------------------------------------sc} procedure DeleteIECache; var lpEntryInfo: PInternetCacheEntryInfo; hCacheDir: LongWord; dwEntrySize: LongWord; begin { DeleteIECache } dwEntrySize := 0; FindFirstUrlCacheEntry(nil, TInternetCacheEntryInfo(nil^), dwEntrySize); GetMem(lpEntryInfo, dwEntrySize); if dwEntrySize>0 then lpEntryInfo^.dwStructSize := dwEntrySize; hCacheDir := FindFirstUrlCacheEntry(nil, lpEntryInfo^, dwEntrySize); if hCacheDir<>0 then begin repeat DeleteUrlCacheEntry(lpEntryInfo^.lpszSourceUrlName); FreeMem(lpEntryInfo, dwEntrySize); dwEntrySize := 0; FindNextUrlCacheEntry(hCacheDir, TInternetCacheEntryInfo(nil^), dwEntrySize); GetMem(lpEntryInfo, dwEntrySize); if dwEntrySize>0 then lpEntryInfo^.dwStructSize := dwEntrySize; until not FindNextUrlCacheEntry(hCacheDir, lpEntryInfo^, dwEntrySize) end; { hCacheDir<>0 } FreeMem(lpEntryInfo, dwEntrySize); FindCloseUrlCache(hCacheDir) end; { DeleteIECache } begin DeleteIECache end.
Delphi-Quellcode:
{ declaration }
Function DnsFlushResolverCache: DWord; stdcall; external 'dnsapi.dll'; ... { call it } procedure CallIt; begin { call it, ignore return code } DnsFlushResolverCache; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:45 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