Mengambil source code HTML dari TWebBrowser

January 17, 2009 at 1:49 pm | In Code Samples, Tutorials | Leave a 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.

No Comments Yet »

RSS feed for comments on this post. TrackBack URI

Leave a comment

XHTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <pre> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Blog at WordPress.com. | Theme: Pool by Borja Fernandez.
Entries and comments feeds.