Odczytywanie dynamicznych zmian na stronie www

0

Witam,
mam pytanie odnośnie delphi i odczytywania pewnych parametrów które się zmieniają dynamicznie na stronie.
Sytuacja wygląda w ten sposób, że jest pewna strona na której zmieniają się pewne informacje na stronie co jakiś czas. Aktualizacje które się pojawiają nie są wyświetlane w wyniku przeładowania strony. Zdaje się, że wyświetla je ajax.
Czy jest możliwość aby aplikacjia w delphi "wchodziła" na tą stronę i monitorowała te zmiany które się pojawiają i zmieniają bez przeładowywania strony www?

Pozdrawiam
raker

0

jak się dowiesz jak te "aktualizacje" działają to będzie można coś wymyślić

0

Tak jak pisałem jest to ajax czyli połączenie php i javascript. Generalnie jest to zrobione w ten sposób, że masz jakieś pole w kodzie html np. i php zwraca do javascripta z uzyciem ajaxa jakieś wartości i js poźniej podmenia tego spana "pole".
Tylko wszystko dzieje się bez przeładowania strony.

0

Bez przeładowywania strony to jedynie używając TWebBrowser lub innego komponentu przeglądarki po to aby JavaScript (ajax) mógł się wykonywać. Monitorujesz zmiany poprzez cykliczne (np. co sekundę) pobieranie źródła strony (tego po wykonaniu JS) i jego analizę.

0

A czy ustawienie sprawdzania co 1 sek nie spowoduje nadmiernego zużycia pamięci kompa?

0

aaa, tylko jest jedna ważna sprawa. Ajax ma to do siebie, że nawet jak przeładuje stronę to nie będę widział tych komunikatów o które mi chodzi. Załóżmy, że ten span o którym wspominałem wygląda tak ladowanie danych.... i za każdym razem jak przeładuję stronę to będę widział właśnie taką wartość tego pola. Dopiero gdy ajax je ustawi to będą one wyglądały inaczej. Sprawdziłem to w prosty sposób. Zapisałem stronę "save as..." i nie było tych danych których szukam pomimo tego, że fizycznie na przeglądarce je widziałem no bo teoretycznie załadowany kod źródłowy strony był bez danych.

0

mozliwe ze mozna to zrobic i bez WebBrowser'a, wszyskto zalezy od tego w jak duzym stopniu strona uzywa JS i czy np uzywa cookies.
ajax to tak naprawde wyslanie zapytania do serwera i otrzymanie odpowiedzi, tyle ze "na boku i po cichu" - bez przeladowywania calej strony.
wszystkim zajmuje sie javascript, ktory wrzuca otrzymane (i ewentualnie "przetrawione") dane do span'a.
jesli wiesz jak wyglada zapytanie to mozesz je wyslac ze swojego programu i otrzymasz od serwera odpowiedz.
wybadaj dokladnie jak to wyglada na stronie.

0
raker napisał(a)

Sprawdziłem to w prosty sposób. Zapisałem stronę "save as..." i nie było tych danych których szukam pomimo tego, że fizycznie na przeglądarce je widziałem no bo teoretycznie załadowany kod źródłowy strony był bez danych.
W Internet Exploer jak otworzysz tą stronę i dasz pokaż źródło to są te dane?

0

używam chroma i tam nie ma, ale sprawdzilem w ie i tez tego nie ma wkodzie

0

a co to za strona, mozesz adres podac?

0

np. tutaj: http://zulutrade.com/TradeWall.aspx
Jak zobaczycie pojawiają się nowe pozycje, ja bym chciał wyłapywać z automatu

0

No to chyba powinno działać jak pisałem czyli na dzień dobry:

WebBrowser1.Navigate('http://zulutrade.com/TradeWall.aspx');

a później cykliczne np w Timerze pobieranie źródła strony po wykonaniu JS i jego analiza.
Do pobrania źródła strony po JS możesz użyć tej funkcji:

function GetJSSource(WB: TWebBrowser): string;
var
   iElement : IHTMLElement;
begin
   result:= '';
   if Assigned(WB.Document) then
   begin
     iElement:= (WB.Document as IHTMLDocument2).Body;
     while (iElement.parentElement <> nil) do
     begin
       iElement := iElement.parentElement;
     end;
     result:= iElement.outerHTML;
   end;
end;
0

Oczywiście sprawdzę i dzieki za kod, ale jak dasz podgląd kodu w przegladarce to tych pozycji oczywiście nie widać, ciekawe czy będzie działać.

0

Cześć, miałeś rację, działa ok :).
Będę miał jeszcze kilka pytań ale to może w osobnym temacie bo czegoś innego dotyczą.
Dzięki za pomoc

1 użytkowników online, w tym zalogowanych: 0, gości: 1