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