Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Blok içinden veri alma
#1
Merhaba,

Web Parse işlemi için aşağıdaki kodları kullanıyorum.
Yaklaşık 100 yakın verileri almaya çalışırken veriler eksik geliyor. Aynı div blogu içindeki link ve açıklamaları nasıl eksiksiz alabilir?



      IDoc.Close;
      I := 0;
      IHrefName := IDoc.Body.All.Tags('a');
      IDivName := IDoc.Body.All.Tags('div');
      ISpanName := IDoc.Body.All.Tags('span');
      IDivSay := Integer(IDoc.Body.All.Tags('div').Length);
      while I < IDivSay do
      begin
        IDiv := IDivName.Item(I);
        if SameText(IDiv.ClassName,  's-card-s-latency-cf-section s-card-border') then // Start
        begin
          ISpan := ISpanName.Item(I);
          IHref := IHrefName.Item(I);
          BoolLink := SameText(IHref.ClassName, 'a-link');
          BoolTitle := SameText(ISpan.ClassName, 'a-color-base a-text-normal');
          if BoolLink then
          begin
            Showmessage(IHref.Href);
          end;
          if BoolTitle then
          begin
            Showmessage(ISpan.InnerText);
          end;
        end;
        Inc(I); // While
      end;
    end;


Örnek div:
<div class="s-card-s-latency-cf-section s-card-border"> <a class="a-link" href="/click?e=Bvacuum%26qi">
<span class="a-color-base a-text-normal">High-Powered 60w Motor</span></div>
Cevapla
#2
Eğer belirli bir kritere göre bazı kısımlar alınacak ise Regex daha uygun bir çözüm olur.

uses System.RegularExpressions;

var
fc: TMatchCollection;
f: TMatch;
rs: string;
begin
//rs := '<a.*?href="([^"]*)"'
rs := '(?Sad?:https?|ftp):\/\/)?[\w/\-?=%.]+\.[\w/\-&?=%.]+';
fc := TRegEx.Matches(parse_edilecek_veri, rs,[roIgnoreCase]);
for f in fc do
begin
ListBox1.Items.Add(f.Value);
end;
end;
SRHT
Cevapla
#3
(09-11-2022, Saat: 20:42)ARM Adlı Kullanıcıdan Alıntı: Eğer belirli bir kritere göre bazı kısımlar alınacak ise Regex daha uygun bir çözüm olur.

uses System.RegularExpressions;

var
 fc: TMatchCollection;
 f: TMatch;
 rs: string;
begin
//rs := '<a.*?href="([^"]*)"'
 rs := '(?Sad?:https?|ftp):\/\/)?[\w/\-?=%.]+\.[\w/\-&?=%.]+';
 fc := TRegEx.Matches(parse_edilecek_veri, rs,[roIgnoreCase]);
 for f in fc do
 begin
   ListBox1.Items.Add(f.Value);
 end;
end;



Teşekkür ederim;

Fakat Regex ile sadece divdeki verileri alıyorum (a-link) ve (a-color-base a-text-normal) verileri gelmiyor
Cevapla
#4
Verdiğiniz örnek üzerinden Size birkaç küçük örnek paylaşayım. Sağdaki match information penceresinde Group1 ve Group2 diye yazanlar sizin istediğiniz veriler. Burada önemli olan regex söz dizimini nasıl yazdığınız.

https://regex101.com/r/3nIyd6/1

https://regex101.com/r/QGii9M/1

https://regex101.com/r/bCjzgv/1
SRHT
Cevapla
#5
(10-11-2022, Saat: 15:18)ARM Adlı Kullanıcıdan Alıntı: Verdiğiniz örnek üzerinden Size birkaç küçük örnek paylaşayım. Sağdaki match information penceresinde Group1 ve Group2 diye yazanlar sizin istediğiniz veriler. Burada önemli olan regex söz dizimini nasıl yazdığınız.

https://regex101.com/r/3nIyd6/1

https://regex101.com/r/QGii9M/1

https://regex101.com/r/bCjzgv/1


Çok teşekkür ederim yardımcı olduğunuz için.
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Klasördeki Tüm Excel Dosyalarından Veri Alma bünyamin68 13 891 09-01-2023, Saat: 09:33
Son Yorum: RAD Coder
  Excelden veri çekerken lisans uyarısı akuyumcu63 18 1.384 16-11-2022, Saat: 14:47
Son Yorum: sabanakman
  kap.org.tr veri alma hk. pro_imaj 5 637 12-10-2022, Saat: 14:59
Son Yorum: pro_imaj
Photo REST API Post ile Token Alma ahmet6513 4 484 27-09-2022, Saat: 15:53
Son Yorum: ahmet6513
Question NetHttpClient nesnesi e Get metodu veri çekme problemi delphicim 3 674 22-07-2022, Saat: 20:40
Son Yorum: delphicim



Konuyu Okuyanlar: 1 Ziyaretçi