Czarna strona WebBrowsera - OleObject i te sprawy.
Przedstawię wam najpotrzebniejsze funkcje WebBrowser-a. Oto one:
Aby pobrać kod HTML wystarczy jedna linika kodu:
function GetHtml(WebBrowser : TWebBrowser) : String;
begin
Result:=WebBrowser.OleObject.Document.documentElement.innerHTML;
end;
Możemy również pobrać sam tekst, bez znaczników HTML:
function GetText(WebBrowser : TWebBrowser) : String;
begin
Result:=WebBrowser.OleObject.Document.documentElement.innerText;
end;
Pobranie wszystkich adresów obrazków ze strony:
function GetImages(WebBrowser : TWebBrowser) : String;
var a : Integer;
s : String;
begin
for a := 0 to WebBrowser.OleObject.Document.Images.Length-1 do
s:=s+(WebBrowser.OleObject.Document.Images.Item(a).Src)+#13;
Result:=s;
end;
Aby pobrać wielkość strony w bajtach:
function GetSize(WebBrowser : TWebBrowser) : Integer;
begin
Result:=StrToInt((WebBrowser.Document as IHTMLDocument2).FileSize);
end;
Aby pobrać wszystkie linki ze strony:
function GetLinks(WebBrowser : TWebBrowser) : String;
var s : String;
a : Integer;
begin
for a := 0 to WebBrowser.OleObject.Document.Links.Length-1 do
s:=s+(WebBrowser.OleObject.Document.Links.Item(a).href)+#13;
Result:=s;
end;
Funkcja do pobrania protokołu:
function GetProtocol(WebBrowser : TWebBrowser) : String;
begin
result:=WebBrowser.OleObject.Document.Location.Protocol;
end;
Funkcja do pobierania jakie cookies wysyła nam strona:
function GetCookies(WebBrowser : TWebBrowser) : String;
var
documentt: IHTMLDocument2;
cookies: String;
begin
documentt := WebBrowser.Document as IHTMLDocument2;
if Assigned(documentt) then
cookies := documentt.cookie;
Result:=cookies;
end;
Funkcja do pobierania adresów wszystkich ramek:
function GetFrames(WebBrowser : TWebBrowser) : String;
var s : String;
a : Integer;
begin
for a := 0 to WebBrowser.OleObject.Document.Frames.Length-1 do
s:=s+(WebBrowser.OleObject.Document.Frames.Item(a).Document.URL)+#13;
Result:=s;
end;
Funkcja, która zwraca nam adres aktualnej strony:
Edit1.Text:= WebBrowser1.LocationURL;
Aby powyższe funkcje działały strona musi być całkowicie załadowana !!(OnDocumentComplete)
Do działania niektórych funkcji wymagany jest moduł MSHTML!!
Życzę miłej i bezproblemowej współpracy z WebBrowser-em ;)
Oceniajcie! to mój pierwszy art ;)
No z czymś takim to można przeglądarkę z prawdziwego zderzenia, zrobić!
wiem, ale normalnie to strasznie ciężko znaleźć...
ja dałem 6 :D
bardzo dobrze, dostatecznie ;-) Stawiam 6 :-D
Przepraszam bardzo, ale zapomniałem o najważniejszym - cookies, ale już zmodyfikowałem.
hmm... Ciekawe skąd można dorwać wszystkie??
co dorwać??
haha nazwy obrazkow w stringu:P stringlist wez w result
mi jednak jest łatwiej na string-u, bo raz musze wciepnąć TStringList, a raz do TStrings,a tak tylko przypisuję zmienną Text.
hehhe...podoba mi się....5
tomksoft fajny art tylko szkoda ze w Delphi:-(
hmmm. no co zrobić, narazie tylko Delphi sie zajmuje, ale jak masz coś ala WebBrowser w innym języku to też powinno działać.
Thx, ciekawe, daje 5. Calkiem przydatne, rozwiazalo mi to jeden powazny problem
Jestem baardzo początkujący i chciałbym się dowiedzieć, jak wywołać funkcję GetCookies??
np. edit1.text := GetCookies(Nazwa_WebBrowsera);
Thx za pomoc:)
A jak pobrać datę modyfikacji strony ?
a jak zablokowac kominikaty o informujące o błędach w skryptach i jak zablokowac popupy
Wszystko pięknie ładnie, tylko że jest jedno ale.. :)
ten WebBrowser to nic innego jak opakowana kontrolka Internet Explorera :P A wszyscy wiedzą jaka z niego gówniana przeglądarka jest ;) Ta kontrolka da tylko takie możliwości, jakie może dać IE, i będzie tak samo podatna na wirusy, hacking, dialery i inne śmieci. Jak już ktoś chce pisać przeglądarkę, to raczej chyba lepiej całkiem od zera.
zamiast tego blokokowania nowych okien przez cancel proponuję
procedure TMDIChild.WebBrowser1NewWindow2(Sender:TObject; var ppDisp: IDispatch; var Cancel: WordBool)
var
NewWindow:TMDIChild;
begin
NewWindow:=TMDIChild.Create(self);
NewWindow.Show;
ppDisp:=NewWindow.WebBrowser1.DefaultDispatch;
end;
a następnie sprawdzić, czy podczas OnBeforeNavigate lub OnDocumentComplete następuje NewWindow2, i wtedy dać Cancel:=True ;)
Świetny artykuł!!!!
Tego potrzebowałem!!!!
a przepraszam ja was bardzo ale jak ustawić żeby toto kożystało ze StatusBar?
I jak wyłapywać te teksty bo chciałbym to w logu (co się ściąga jak odwiedzam strony i wogóle wszystkie te teksty)
Jakby ktos zrobil engine wlasny(cos innego niz spakowane badzIEwIE), to bylbym wdzieczny, gdyz sam na VCL, mimo prob, zadnego komponentu napisac nie potrafie ;(
Tomalla: lol :D i myslisz ze jeszcze ktos by ci dal za darmo? :) w sumie jest jeden taki http://pbear.com/htmlviewers.html, komercyjna wersja obsluguje nawet wiekszosc CSSow, ale brak w nim JS (co mozna stosunkowo latwo nadrobic integrujac go z SpiderMonkey :D )
migajek: target="_top" otwiera w obecnym oknie - do nowego okna służy target="_blank" (ale zdaje się to była tylko pomyłka) ;]
Tommalla - jak chcesz alternatywy to proponuje Mozilla Control. mam i nie narzekam, a nawet sie ciesze ze z dziurawego ie nie korzystam.
sasser.64, może podaj gdzie da się ściągnąć Mozilla Controle?
Weź dodaj kod na modyfikacje span w wyświetlonej stronie
Blokowanie pop-up: Znajdź zdarzenie onNewWindow2, kliknij dwa razy w pustym polu obok, i w nowej procedurze (np. WebBrowser1NewWindow2) wpisz cancel:=true;
To (chyba) zablokuje tworzenie wszystkich nowych okien, wiec jak na stronie bedzie np. <A HREF="someadres" TARGET="_top" ... > (już wyjaśniam jak ktoś HTML nie zna: TARGET="_top" oznacza żeby dokument w nowym oknie ladowac) to to też chyba zablokuje...