Programowanie w języku Delphi » Artykuły

TWebBrowser i przyjaciele

  • 2010-05-11 21:02
  • 30 komentarzy
  • 2478 odsłon
  • Oceń ten tekst jako pierwszy
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 ;)

30 komentarzy

siekierzyński 2008-08-29 19:37

Weź dodaj kod na modyfikacje span w wyświetlonej stronie

_13th_Dragon 2008-06-19 14:31

sasser.64, może podaj gdzie da się ściągnąć Mozilla Controle?

xc1024 2008-06-17 20:54

Tommalla - jak chcesz alternatywy to proponuje Mozilla Control. mam i nie narzekam, a nawet sie ciesze ze z dziurawego ie nie korzystam.

Coldpeer 2006-07-23 23:04

migajek: target="_top" otwiera w obecnym oknie - do nowego okna służy target="_blank" (ale zdaje się to była tylko pomyłka) ;]

migajek 2006-06-18 16:13

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 )

Tommalla 2006-05-06 20:47

Jakby ktos zrobil engine wlasny(cos innego niz spakowane badzIEwIE), to bylbym wdzieczny, gdyz sam na VCL, mimo prob, zadnego komponentu napisac nie potrafie ;(

FALCO 2006-02-13 20:46

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)

Gargamel12 2006-01-01 15:22

Świetny artykuł!!!!
Tego potrzebowałem!!!!

mike_p 2005-05-08 12:52

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 ;)

gamecreator 2005-02-10 21:03

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.

migajek 2004-11-07 18:23

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. (już wyjaśniam jak ktoś HTML nie zna: TARGET="_top" oznacza żeby dokument w nowym oknie ladowac) to to też chyba zablokuje...

Waldi 2004-09-14 18:16

a jak zablokowac kominikaty o informujące o błędach w skryptach i jak zablokowac popupy

fleming86 2004-08-31 17:34

A jak pobrać datę modyfikacji strony ?

marrek13 2004-06-10 18:31

Thx za pomoc:)

Snowak 2004-06-10 15:02

np. edit1.text := GetCookies(Nazwa_WebBrowsera);

marrek13 2004-06-02 21:47

Jestem baardzo początkujący i chciałbym się dowiedzieć, jak wywołać funkcję GetCookies??

Snowak 2004-05-24 16:15

Thx, ciekawe, daje 5. Calkiem przydatne, rozwiazalo mi to jeden powazny problem

tomksoft 2004-05-21 11:41

hmmm. no co zrobić, narazie tylko Delphi sie zajmuje, ale jak masz coś ala WebBrowser w innym języku to też powinno działać.

mcbury 2004-05-21 08:18

tomksoft fajny art tylko szkoda ze w Delphi:-(

Kaczor 2004-05-20 18:08

hehhe...podoba mi się....5

tomksoft 2004-05-20 13:31

mi jednak jest łatwiej na string-u, bo raz musze wciepnąć TStringList, a raz do TStrings,a tak tylko przypisuję zmienną Text.

Drajwer 2004-05-20 08:33

haha nazwy obrazkow w stringu:P stringlist wez w result

angel2953 2004-05-19 16:51

hmm... Ciekawe skąd można dorwać wszystkie??

tomksoft 2004-05-19 15:40

Przepraszam bardzo, ale zapomniałem o najważniejszym - cookies, ale już zmodyfikowałem.

CooBek 2004-05-19 15:35

bardzo dobrze, dostatecznie ;-) Stawiam 6 :-D

jusa 2004-05-19 15:00

ja dałem 6 :D

tomksoft 2004-05-19 15:00

wiem, ale normalnie to strasznie ciężko znaleźć...

jusa 2004-05-19 14:59

No z czymś takim to można przeglądarkę z prawdziwego zderzenia, zrobić!

tomksoft 2004-05-19 14:58

Oceniajcie! to mój pierwszy art ;)