Amadeuszek - 20 Cze 2006, 09:57
Witam Moze ktos zostawi przyklad jak z dowolnej strony sciagnac dane z dowolnej tabelki do grida
Dzieki
zeman - 20 Cze 2006, 10:05
Witam Moze ktos zostawi przyklad jak z dowolnej strony sciagnac dane z dowolnej tabelki do grida
http://groups.google.pl/group/pl.comp.lang.delphi?hl=pl&lr=&ie=UTF-8 + idHTTP
Piotr Borowski - 20 Cze 2006, 10:47
Moze ktos zostawi przyklad jak z dowolnej strony sciagnac dane z dowolnej tabelki do grida
Wstawiasz: WebBrowser1 : tWebBrowser idziesz do interesujacej strony: WebBrowser1.Navigate('www.coventry.mobstop.com'); a ponizej dwie funkcje, ktore zapisuja tresc strony do pliku. function DownloadFile(gSourceFile, gDestFile: String): Boolean; begin try Result := UrlDownloadToFile(nil, PChar(gSourceFile), PChar(gDestFile), 0, nil) = 0; except Result := False; end; end;
function SaveDocToFile(Doc: IDispatch; const Fname: string): HResult; var PFile: IPersistFile; begin PFile := Doc as IPersistFile; Result := PFile.Save(StringToOleStr(FName), False); end;
kiedy strona wczyta sie do konca zostanie wywolana ta metoda, a strony zostana zapisane do pikow procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject; const pDisp: IDispatch; var URL: OleVariant); begin DownloadFile(Edit1.Text, ChangeFileExt(ParamStr(0), '.txt1')); SaveDocToFile(WebBrowser1.Document, ChangeFileExt(ParamStr(0), '.txt2')); end;
A potem to juz sie pobaw i wstaw tresc tabelki z pliku do grida ;-)
zeman - 20 Cze 2006, 11:44
| Moze ktos zostawi przyklad jak z dowolnej strony sciagnac dane z dowolnej | tabelki do grida Wstawiasz: WebBrowser1 : tWebBrowser idziesz do interesujacej strony: WebBrowser1.Navigate('www.coventry.mobstop.com');
a ponizej dwie funkcje, ktore zapisuja tresc strony do pliku. function DownloadFile(gSourceFile, gDestFile: String): Boolean; begin try Result := UrlDownloadToFile(nil, PChar(gSourceFile), PChar(gDestFile), 0, nil) = 0; except Result := False; end; end;
function SaveDocToFile(Doc: IDispatch; const Fname: string): HResult; var PFile: IPersistFile; begin PFile := Doc as IPersistFile; Result := PFile.Save(StringToOleStr(FName), False); end;
kiedy strona wczyta sie do konca zostanie wywolana ta metoda, a strony zostana zapisane do pikow procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject; const pDisp: IDispatch; var URL: OleVariant); begin DownloadFile(Edit1.Text, ChangeFileExt(ParamStr(0), '.txt1')); SaveDocToFile(WebBrowser1.Document, ChangeFileExt(ParamStr(0), '.txt2')); end;
A potem to juz sie pobaw i wstaw tresc tabelki z pliku do grida ;-)
to zart ? ;) Pozwiodronka, Zeman.
zeman - 20 Cze 2006, 11:49
to zart ? ;)
ok, nie bede sie czepial.. jakas konkretna odpowiedz to jest, przy pewnych zalozeniach wystarczy, choc czesc tego kodu nie bardzo rozumiem po co.
finkis - 20 Cze 2006, 11:57
Amadeuszek wposcił taką oto wiadomość Witam Moze ktos zostawi przyklad jak z dowolnej strony sciagnac dane z dowolnej tabelki do grida Dzieki
przeparsuj htmla (TWebBrowser chyba wystarczy)
Piotr Borowski - 20 Cze 2006, 11:59
ok, nie bede sie czepial.. jakas konkretna odpowiedz to jest, przy pewnych zalozeniach wystarczy, choc czesc tego kodu nie bardzo rozumiem po co.
gosc pyta jak przerobic strone na grida nie mam czasu aby pisac cos takiego, ale kiedys sie meczylem jak zapisac zawartosc strony do pliku i znalazlem dwa rozwiazania podzielic moimi doswiadczeniami wydaje mi sie, ze dobranie sie do zrodla strony to najtrudniejsze, reszta to zabawa z tekstem, przeszukanie strony pod kontem tabeli i wstawienie wynikow do grida po za tym jestem zwolennikiem tz. burzy mozgow, pierwsza zasada w takiej burzy mowi, ze nie wolno krytykowac zadnego pomyslu, jezeli uwazasz, ze cos jest zle, nie wolno ci tego krytykowac, jedyne co mozesz zrobic to podac lepsza metode, sposob itp. ;-)
zeman - 20 Cze 2006, 15:50
| ok, nie bede sie czepial.. jakas konkretna odpowiedz to jest, przy | pewnych zalozeniach wystarczy, choc czesc tego kodu nie bardzo rozumiem | po co. gosc pyta jak przerobic strone na grida nie mam czasu aby pisac cos takiego, ale kiedys sie meczylem jak zapisac zawartosc strony do pliku i znalazlem dwa rozwiazania
podzielic moimi doswiadczeniami wydaje mi sie, ze dobranie sie do zrodla strony to najtrudniejsze, reszta to zabawa z tekstem, przeszukanie strony pod kontem tabeli i wstawienie wynikow do grida
po za tym jestem zwolennikiem tz. burzy mozgow, pierwsza zasada w takiej burzy mowi, ze nie wolno krytykowac zadnego pomyslu, jezeli uwazasz, ze cos jest zle, nie wolno ci tego krytykowac, jedyne co mozesz zrobic to podac lepsza metode, sposob itp. ;-)
No dobra niech bedzie, choc krytykowac musze, zeby wskazac ze pewien sposob nie zawsze zdaje egzamin, a mianowicie : UrlDownloadToFile jest ok, tylko ze on pobiera dane z keszu jesli tam sa... czyli jesli dane w tabeli co odswiezenie sie zmieniaja, to UrlDownloadToFile zwroci blede zrodla HTMLowe. Przyklad - jesli robilbym powiedzmy program analizujacy stan licytacji na allegro (pobieranie aktualnej ceny) i co minute robilbym UrlDownloadToFile(adres_aukcji) to UrlDownload sie nie nadaje bo bedzie kod strony pobieral z kaszy. (istnieje jeszcze niby jeden sposob zeby kazac nie pobierac z keszu ale jest popaprany i na dodatek nie zawsze dziala) function SaveDocToFile(Doc: IDispatch; const Fname: string): HResult; z ta funkcja sie zgadzam, dobra do zapisania do pliku
jesli z webbrowsera to jeszcze mozna :
// ----------------------------------------------------- // -- wczytaj zrodlo strony do strumienia // ----------------------------------------------------- procedure SaveWebBrowserHTMLSrcToStream(WB: TWebBrowser; Stream: TStream); var Doc : IHTMLDocument2; PersistStreamInit : IPersistStreamInit; Adapter : TStreamAdapter; begin if not Assigned(Stream) then exit; if WB.Document=nil then exit; Doc:= WB.Document as IHTMLDocument2; OleCheck(Doc.QueryInterface(IPersistStreamInit, PersistStreamInit)); Adapter := TStreamAdapter.Create(Stream); PersistStreamInit.save(Adapter, true); Adapter.Free; end; // -----------------------------------------------------
// ----------------------------------------------------- // -- wczytaj zrodlo strony do pliku // ----------------------------------------------------- procedure SaveWebBrowserHTMLSrcToFile(WB: TWebBrowser; FileName: string); var FStream : TFileStream; begin try FStream:= TFileStream.Create(FileName, fmCreate); SaveWebBrowserHTMLSrcToStream(WB, FStream); except on E: EFileStreamError do begin {wystapil blad obslugiwania pliku} end; end; FStream.Free; end; // -----------------------------------------------------
// ----------------------------------------------------- // -- wczytaj zrodlo strony do stringa // ----------------------------------------------------- function GetHTMLSrcFromWebBrowser(WB: TWebBrowser): string; var SStream : TStringStream; begin try SStream:= TStringStream.Create(''); SaveWebBrowserHTMLSrcToStream(WB, SStream); except on E: EStreamError do begin {wystapil blad obslugiwania strumyka} end; end; Result := SStream.DataString; SStream.Free; end; // -----------------------------------------------------
// ----------------------------------------------------- // -- wczytaj to co widac w przegladarce do stringa // ----------------------------------------------------- function GetHTMLTextFromWebBrowser(WB: TWebBrowser): string; var Doc : IHTMLDocument2; begin if WB.Document=nil then exit; Doc:= WB.Document as IHTMLDocument2; Result:= Doc.body.innerText; end; // -----------------------------------------------------
no ale poza tym ze mozna pobrac zrodlo z WebBrowsera to mozna sie pobawic w dostep do tagow : // ------------------------------------------------------ procedure FillInputFieldsInWebBrowser(WB: TWebBrowser); var Doc : IHTMLDocument2; Coll : IHTMLElementCollection; El : IHTMLElement; i : integer; begin if WB.Document=nil then exit; Doc:= WB.Document as IHTMLDocument2; OleCheck(Doc.all.tags('table').QueryInterface(IHTMLElementCollection, Coll)); for i:= 0 to Coll.length-1 do // dla kazdej tabelki begin OleCheck(Coll.item(i, EmptyParam).QueryInterface(IHTMLElement, El)); // tutaj mozna sie dobrac do TR i TD... nie wiem, moze ta tabelka ma cos charakterystycznego, a moze ma nadane id ? wtedy nie trzeba iterowac po tabelach.. mozliwosci jest duzo. end; end;
Ja tam bzm i tak uzyl zrodlo_strony_html := idHTTP.GET(adres_strony); bez zadnego cudowania jedna linia kodu...
i pozniej najpewniej uzylbym wyrazen regularnych PCRE odpowiednich do wzszukania zawartosci komorek
Pozwiodronka, Zeman.
kf - 20 Cze 2006, 18:34
Ja tam bzm i tak uzyl zrodlo_strony_html := idHTTP.GET(adres_strony); bez zadnego cudowania jedna linia kodu...
Cudownie ...gdybys jeszcze cial cytaty - nie trzebaby bylo tyle przewijac aby zobaczyc te jedna linijke kodu .... pozdrawiam kf
zeman - 20 Cze 2006, 19:00
| Ja tam bzm i tak uzyl | zrodlo_strony_html := idHTTP.GET(adres_strony); | bez zadnego cudowania jedna linia kodu... Cudownie ...gdybys jeszcze cial cytaty - nie trzebaby bylo tyle przewijac aby zobaczyc te jedna linijke kodu ....
a co wg Ciebie bylo cytatem w moim poprzednim poscie ? ;)
Amadeuszek - 21 Cze 2006, 00:43
Witam Moze ktos zostawi przyklad jak z dowolnej strony sciagnac dane z dowolnej tabelki do grida
Dzieki
DZIEKUJE WSZYSTKIM SERDECZNIE ZA TAK SZYBKA ODPOWIEDZ NA MOJ APEL O POMOC. Sprawa jednak byla prosta prosze o przyklad a nie fragmenty kodu kiedy przegladam to zaczynam sie zastanawiac czego mi w tym brakuje moze dodatkowego komponentu moze czegos innego jako przyklad rozumie sie dzialajacy fragment programu:
{ROZPOCZYNAJACY SIE OD}unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs; type TForm1 = class(TForm) private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.DFM} {ZAKONCZONY} end.
od poprostu cala filozofia :) programowac umiecie to widac ale jak to zawsze nastudiach powtarzaja : "CZYTAJCIE UWARZNIE TRESC ZADANIA"
PaSkol - 21 Cze 2006, 02:44
Sprawa jednak byla prosta prosze o przyklad a nie fragmenty kodu kiedy przegladam to zaczynam sie zastanawiac czego mi w tym brakuje moze dodatkowego komponentu moze czegos innego jako przyklad rozumie sie dzialajacy fragment programu:
Znaczy się ... gotowca byś chciał? Skoro się wybrało taki nick (pseudonim) to chyba do czegoś zobowiązuje? W wątku jest wyraźnie wymieniony z nazwy komponent jakiego należy użyć (czyli niczego Ci nie brakuje). Korzystając z systemu pomocy Delphi można się dowiedzieć reszty, kolejną porcję wiedzy zapewnia folder z przykładowymi źródłami. Dokładając do tego wszystkiego Document Object Model (jak się zna JavaScript jest prościej, jeśli nie - można doczytać na MSDN-ie) ma się wszystko, co do szcześcia potrzeba. Jak korzystać z DOM z poziomu TWebBrowser podał Kolega zeman.
programowac umiecie to widac ale jak to zawsze nastudiach powtarzaja : "CZYTAJCIE UWARZNIE TRESC ZADANIA"
wyślecie".
Lukasz Sokol - 26 Cze 2006, 02:18
[...] od poprostu cala filozofia :) programowac umiecie to widac ale jak to zawsze nastudiach powtarzaja : "CZYTAJCIE UWARZNIE TRESC ZADANIA"
Panu już dziękujemy. Właśnie wylądował pan w moim KF. el es
Co jest grane? Biurotrix warszawski a sprawa domeny WWW.WARSZAWA.pl - kolejna odslona...
Serwer z dostepem 115 kbit/s moze oferowac platne konta WWW?
KK Getin - jest już podgląd do rachunku karty w www.gb24.pl
odrzucanie na poziomie przyjmowania listu na domenę www.mojadomena.pl
Birotrixowo-polityczna unifikacja i integracja stron www ?
Dostep do konta pocztowego tylko przez www
Morena przy przychodni - co to?
plyta tatu
biuro norwegian szczecin
v rally
technikum ceramiczne
pekla torebka stawowa
port irda
EFS STYPENDIA
obudowa drewniana na studnie
nagrywarki dvd 3
Zbiór wiadomości z for dyskusyjnych || Strona Główna
|