Mengambil source code HTML dari TWebBrowser

January 17, 2009 at 1:49 pm | Posted in Code Samples, Tutorials | 1 Comment
Tags: , , , , ,

Oleh: Zamrony P. Juhara

Tips ini saya tulis untuk menjawab pertanyaan di mailing list Delphindo tentang bagaimana mendapatkan source code HTML website yang telah dimuat dalam kontrol TWebBrowser.

Setelah saya dapat konfirmasi bahwa kode yang saya posting di mailing list Delphindo bekerja, saya posting di sini agar informasinya mudah ditemukan.

Untuk mendapatkan source code elemen HTML, Anda perlu mendapatkan instance interface IHTMLElement untuk elemen yang ingin diketahui source codenya.

Untuk kasus mendapatkan kode HTML seluruh halaman website yang sudah dimuat dalam kontrol TWebBrowser, yang perlu dilakukan adalah mendapatkan elemen terluar pada dokumen HTML. Ini bisa dilakukan dengan menggunakan property body milik interface IHTMLDocument2.

Anda perlu mengkonversi properti Document milik TWebBrowser ke IHTMLDocument2 (misal dengan operator as). Properti Document berisi nil bila dokumen HTML belum termuat seluruhnya sehingga Anda perlu pastikan, properti ini tidak nil.

Setelah mendapatkan alamat instance body dokumen HTML, elemen terluar diperoleh dengan membaca properti parentElement secara berulang-ulang sampai parentElement berisi nil, yang berarti elemen saat ini adalah elemen terluar.

Source codenya diperoleh dengan membaca properti outerHTML.

Di bawah ini adalah contoh implementasinya.


unit u_html_util;
interface
uses mshtml;

function html_get_source(browser:TWebBrowser):string;

implementation

function html_get_source(browser:TWebBrowser):string;
var elem:IHTMLElement;
begin
   //cek apakah dokumen sudah lengkap
   if browser.Document <> nil then
   begin
      //ambil element body
      elem:=(browser.Document as IHTMLDocument2).body;
      while elem.ParentElement<>nil do
      begin
          elem:=elem.parentElement;
      end;
      result:=elem.outerHTML;
   end;
end;

end.

Untuk menggunakannya mudah. Contohnya seperti berikut ini (diasumsikan Memo1 dan WebBrwoser1 masing-masing berisi instance TMemo dan TWebBrowser yang valid.

Memo1.Text:=html_get_source(WebBrowser1)

Ok, itu saja tipsnya kali ini.

1 Comment »

RSS feed for comments on this post. TrackBack URI

  1. Kalau penjumlahan biner Gmn?


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Create a free website or blog at WordPress.com.
Entries and comments feeds.

%d bloggers like this: