Class ismine göre Html parse (İhtiyacı olan için örnektir)

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Lord_Ares
Üye
Mesajlar: 1070
Kayıt: 15 Eki 2006 04:33
Konum: Çorlu

Class ismine göre Html parse (İhtiyacı olan için örnektir)

Mesaj gönderen Lord_Ares »

Merhaba arkadaşlar.
Görüyorum ki benim gibi Html parse işlemleri ile uğraşan birçok arkadaşlarımız var. Bende yardımı dokunur amacıyla, bulduğum bir kod örneğinde ufak değişiklikler yaparak
sizlerle paylaşmak istedim. Html parse ederken genelde id numarasına göre yapıyoruz fakat bazılarında id olmayıp sadece class ismi bulunuyor bu gibi durumlarda kullanmak için dilerseniz aşağıdaki prosedürü kullanabilirsiniz. Bu prosedüre sayfa içinde aradığınız class ismini verirseniz, sayfada bu class ismine sahip tüm html elementlerini bulur ve içerisindeki yazıyı gösterdiğini bir memoya ekler. İsterseniz bunu prosedür değil fonksiyon olarak düzenleyerek çıktısını memoya değil dilediğiniz bir değişkene alabilirsiniz.
Saygılarımla
Örneğin
<Div class ="deneme"> merhaba </div>

Sonuç = merhaba olarak memoya ekler

Bu özellikle iç içe geçmiş div veya başka blokları alırken çok işime yaradı. umarım sizlere de faydası dokunur.

Örnek kod: Uses kısmına MSHTML eklemeyi unutmayınız.

Kod: Tümünü seç


procedure Class_Getir(const Doc: IDispatch; const classname: string;  Lst:TMemo);
var
  Document: IHTMLDocument2;
  Body: IHTMLElement2;
  Tags: IHTMLElementCollection;
  Tag: IHTMLElement;
  I: Integer;
begin
  Lst.Clear;
  if not Supports(Doc, IHTMLDocument2, Document) then
    raise Exception.Create('Invalid HTML document');
  if not Supports(Document.body, IHTMLElement2, Body) then
    raise Exception.Create('Can''t find <body> element');
  Tags := Body.getElementsByTagName('*');
  for I := 0 to Pred(Tags.length) do
  begin
    Tag := Tags.item(I, EmptyParam) as IHTMLElement;
    if AnsiSameText(Tag._className, classname) then
    begin
      Lst.Lines.Add(Tag.innerHTML);
      Lst.Lines.Add('-------------------------------------------------');
    end;
  end;
end;
Kullanımı;
Class_Getir(Webbowser1.Document,'satıs',Memo1); /// class adı satış olanların içindeki bilgiyi formundaki memoya ekler.

Ayrıca sayın Mrmarman hocamın bana vermiş olduğu bir kodu sizlerle paylaşmak istedim. Bu kod id veya class adını verdiğiniz bir bloğu almanıza yarar. Kendisine çok teşekkür ediyorum.
viewtopic.php?f=2&t=31699&hilit=tamam%C4%B1+de%C4%9Fil
Cevapla