Herkese Merhaba,
Web sitesinden delphi ile bilgi çekme konusunda çok sayıda site ve makaleye göz atmama rağmen aradığım konuyu halen bulamadım. Biraz zor yoldan kendim birşeyler yapıyorum, ancak 1 dakikada yapabileceğim iş 1 saate çıkıyor.
Örneğin;
Kaynak Kodu
<a data-toggle="tooltip" title="" href="......................." class="item-list-page__item">
<div class="item-list-page__item__color-pane" style="background: linear-gradient(to right, #0F1318, #C5CBC4);"></div>
<h4 class="item-list-page__item__title">01.07.2019</h4>
<h5 class="item-list-page__item__desc">5 YILDIZ</h5>
</a>
</div>
<a data-toggle="tooltip" title="" href="......................." class="item-list-page__item">
<div class="item-list-page__item__color-pane" style="background: linear-gradient(to right, #0F2554, #C46874);"></div>
<h4 class="item-list-page__item__title">05.07.2019</h4>
<h5 class="item-list-page__item__desc">3 YILDIZ</h5>
</a>
</div>
<a data-toggle="tooltip" title="" href="......................." class="item-list-page__item">
<div class="item-list-page__item__color-pane" style="background: linear-gradient(to right, #00294E, #0C1324);"></div>
<h4 class="item-list-page__item__title">05.07.2019</h4>
<h5 class="item-list-page__item__desc">4 YILDIZ</h5>
</a>
</div>
Şeklinde giden ve her sayfada 25 kayıt getiren bir şirket içi web sitemiz var. (Veritabanı konusuna hiç girmeyelim, erişim şansım sıfır)
Bu sayfadan;
Kayıt 1
1. veri : #0F1318
2. veri : #C5CBC4
3. veri : 01.07.2019
4. veri : 5 YILDIZ
Kayıt 2
1. veri : #0F2554
2. veri : #C46874
3. veri : >05.07.2019
4. veri : 3 YILDIZ
Şeklinde 25 Kaydı alıp memo içine alt alta eklemek istiyorum. toplamda 100 satır olacak memo içinde.
Bu konuda destek olabilecek arkadaşlara şimdiden teşekkürler.
Web Sayfasından Veri Çekme Hakkında
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Re: Web Sayfasından Veri Çekme Hakkında
Merhaba,
Kullandığınız Delphi sürümünü belirtmemişsiniz. Aşağıdaki örnek kod Delphi 10.3.2 ile çalışmaktadır. Ayıklanan veri sıralı olarak bir string array içinde çevirmektedir.
Kullandığınız Delphi sürümünü belirtmemişsiniz. Aşağıdaki örnek kod Delphi 10.3.2 ile çalışmaktadır. Ayıklanan veri sıralı olarak bir string array içinde çevirmektedir.
Kod: Tümünü seç
function ParseData(List: TStrings): TArray<string>;
const
Data1 = 'item-list-page__item__color-pane';
var
I: Integer;
TempString: string;
begin
Result := [];
I := 0;
while I < List.Count do
begin
if Pos(Data1, List[I]) > 0 then
begin
TempString := Copy(List[I], Pos('#', List[I]), MaxInt);
TempString := TempString.Substring(0, TempString.IndexOf(')'));
Result := Result + TempString.Replace(' ', EmptyStr).Split([',']);
Inc(I);
TempString := Copy(List[I], Pos('">', List[I]) + 2, MaxInt);
TempString := TempString.Substring(0, TempString.IndexOf('</'));
Result := Result + [TempString];
Inc(I);
TempString := Copy(List[I], Pos('">', List[I]) + 2, MaxInt);
TempString := TempString.Substring(0, TempString.IndexOf('</'));
Result := Result + [TempString];
end;
Inc(I);
end;
end;
Re: Web Sayfasından Veri Çekme Hakkında
IHTMLDocument2 interface'ini kullanarak HTML tag'leri arasında kolayca gezinebilirsiniz.
Kod: Tümünü seç
uses MSHTML;
const
html_icerik =
'<a data-toggle="tooltip" title="" href="......................." class="item-list-page__item">' +
'<div class="item-list-page__item__color-pane" style="background: linear-gradient(to right, #0F1318, #C5CBC4);"></div>' +
'<h4 class="item-list-page__item__title">01.07.2019</h4>' +
'<h5 class="item-list-page__item__desc">5 YILDIZ</h5>' +
'</a>' +
'</div>' +
'<a data-toggle="tooltip" title="" href="......................." class="item-list-page__item">' +
'<div class="item-list-page__item__color-pane" style="background: linear-gradient(to right, #0F2554, #C46874);"></div>' +
'<h4 class="item-list-page__item__title">05.07.2019</h4>' +
'<h5 class="item-list-page__item__desc">3 YILDIZ</h5>' +
'</a>' +
'</div>' +
'<a data-toggle="tooltip" title="" href="......................." class="item-list-page__item">' +
'<div class="item-list-page__item__color-pane" style="background: linear-gradient(to right, #00294E, #0C1324);"></div>' +
'<h4 class="item-list-page__item__title">05.07.2019</h4>' +
'<h5 class="item-list-page__item__desc">4 YILDIZ</h5>' +
'</a>' +
'</div>';
var
doc, linkler, aDiv, h4, h5 : OleVariant;
i,j: Integer;
begin
doc := coHTMLDocument.Create as IHTMLDocument2;
doc.write(html_icerik);
doc.close;
linkler := doc.links; // tüm A tag'ler,
for i := 0 to linkler.length - 1 do
begin
aDiv := linkler.item(i).all.tags('div').item(0); // A tag'i içindeki div'lerin ilki
ShowMessage(aDiv.style.GetAttribute('background', 0)); //div'in style'ının background özelliği
h4 := linkler.item(i).all.tags('h4').item(0); // A tag'i içindeki h4'lerin ilki
ShowMessage(h4.innerText);
h5 := linkler.item(i).all.tags('h5').item(0); // A tag'i içindeki h5'lerin ilki
ShowMessage(h5.innerHtml);
end;
There's no place like 127.0.0.1
Re: Web Sayfasından Veri Çekme Hakkında
Merhabalar, cevaplar için çok teşekkür ederim. Delphi 7 ve Delphi XE3, XE6 sürümlerini kullanıyorum.
Verdiğiniz kodlar muhteşem bir kaynak, ikisi de güzel çalışıyor. Projenin tamamını bitirdikten sonra sizlerle paylaşırım.
Ellerinize sağlık
Verdiğiniz kodlar muhteşem bir kaynak, ikisi de güzel çalışıyor. Projenin tamamını bitirdikten sonra sizlerle paylaşırım.
Ellerinize sağlık