İnternet explorer ile açılan sayfa içinde dolaşma

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Kullanıcı avatarı
hido
Üye
Mesajlar: 268
Kayıt: 29 Mar 2014 04:32

İnternet explorer ile açılan sayfa içinde dolaşma

Mesaj gönderen hido »

Selamlar...

İnternet explorer kullanarak google arama motoru ile belirtmiş olduğum link bulunarak tıklama işlemi gerçeleşiyor,
Buraya kadar sorun yok fakat bulunan sayfa içinde de ikinci bir arama yaptırmayı bir türlü çözemedim bu konuda fikirlerinizle yardımcı olursanız sevinirim...

Kod: Tümünü seç

procedure TForm1.Button2Click(Sender: TObject);
var
  I: Integer;
  IEpp: OleVariant;
  XLink, XSayfa: String;
begin
  if (VarIsEmpty(IEpp)) then
  begin
    IEpp := CreateOleObject('InternetExplorer.Application');
    ShowWindow(IEpp.HWND, SW_SHOWMAXIMIZED);
    IEpp.Visible := True;
  end;
  IEpp.Navigate('https://www.google.com.tr/search?q=' + 'bilgisayar');
  while (IEpp.Busy) - 1 do
  begin
    Sleep(2000);
    Application.ProcessMessages;
    for I := 0 to IEpp.Document.Links.length - 1 do
    begin
      XLink := IEpp.Document.Links.Item(I);
      XSayfa := IEpp.Document.Links.Item(I).Text;
      if XLink = 'http://www.gold.com.tr/bilgisayar_v' then
      begin
        IEpp.Document.Links.Item(I).Click;
        Exit;
      end;
    end;
  end;
end;
Kullanıcı avatarı
brs
Üye
Mesajlar: 626
Kayıt: 04 Eki 2012 03:52

Re: İnternet explorer ile açılan sayfa içinde dolaşma

Mesaj gönderen brs »

Doğrumu anladım bilemiyorum, Google da arama yaptırıp bulunan sayfa açıp o sayfa içinde ikinci bir arama yaptırmak istiyorsunuz...
İşi bilen yardım eder, az bilen akıl verir, bilmeyen eleştirir, yapamayan ise çamur atar...
Kullanıcı avatarı
hido
Üye
Mesajlar: 268
Kayıt: 29 Mar 2014 04:32

Re: İnternet explorer ile açılan sayfa içinde dolaşma

Mesaj gönderen hido »

Evet hocam explorer de açtığım sayfa içinde ikinci bir arama daha yaptırmak istiyorum.
Kullanıcı avatarı
brs
Üye
Mesajlar: 626
Kayıt: 04 Eki 2012 03:52

Re: İnternet explorer ile açılan sayfa içinde dolaşma

Mesaj gönderen brs »

Denemedim fakat olur mu bilemiyorum...

Kod: Tümünü seç

procedure TForm1.Button2Click(Sender: TObject);
var
  I, j: Integer;
  IEpp: OleVariant;
  XLink, XSayfa: String;
begin
  if (VarIsEmpty(IEpp)) then
  begin
    IEpp := CreateOleObject('InternetExplorer.Application');
    ShowWindow(IEpp.HWND, SW_SHOWMAXIMIZED);
    IEpp.Visible := True;
  end;
  IEpp.Navigate('https://www.google.com.tr/search?q=' + 'bilgisayar');
  while (IEpp.Busy) - 1 do
  begin
    Sleep(2000);
    Application.ProcessMessages;
    for I := 0 to IEpp.Document.Links.length - 1 do
    begin
      XLink := IEpp.Document.Links.Item(I);
     [color=#FF0000] XSayfa := IEpp.Document.Links.Item(I, j).Text;[/color]
      if XLink = 'http://www.gold.com.tr/bilgisayar_v' then
      begin
        IEpp.Document.Links.Item(I).Click;
      end
else
begin
[color=#FF0080]  if XLink = 'iletişim' then
begin
        IEpp.Document.Links.Item(j).Click;
        Exit;[/color]
    end;
  end;
end;
En son brs tarafından 01 Şub 2016 04:35 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
İşi bilen yardım eder, az bilen akıl verir, bilmeyen eleştirir, yapamayan ise çamur atar...
Kullanıcı avatarı
hido
Üye
Mesajlar: 268
Kayıt: 29 Mar 2014 04:32

Re: İnternet explorer ile açılan sayfa içinde dolaşma

Mesaj gönderen hido »

Selam, Aranan link bulunduktan sonra klik işleminden sonra exit kullanmak zorundayım exit demeden işleme devam edersem hata alıyorum ve bu seferde bir sonraki klik işlemi gerçekleşmiyor bu durumda ne yapacağım :N(
lütfen yardım...


IEpp.Navigate('https://www.google.com.tr/search?q=' + 'bilgisayar');
while (IEpp.Busy) - 1 do
begin
Sleep(2000);
Application.ProcessMessages;
for I := 0 to IEpp.Document.Links.length - 1 do
begin
XLink := IEpp.Document.Links.Item(I);
XSayfa := IEpp.Document.Links.Item(I).Text;
Sayfam := IEpp.Document.Links.Item(I).Text;

if XLink = 'http://www.gold.com.tr/bilgisayar_v' then
begin
IEpp.Document.Links.Item(I).Click;
Exit;
end
else
begin
if Sayfam = 'Hakkımızda' then
begin
IEpp.Document.Links.Item(I).Click;
Exit;
end;
end;
end;
end;
end;
thelvaci
Kıdemli Üye
Mesajlar: 770
Kayıt: 11 Tem 2010 07:17
Konum: Istanbul
İletişim:

Re: İnternet explorer ile açılan sayfa içinde dolaşma

Mesaj gönderen thelvaci »

Şaşırtıyor bazen buradaki arkadaşlarım beni. IExplore COM objesini kullanarak herhangi bir sayfayı navigate edebilmiş ve içindeki linklerde dolaşabilmiş arzu ettiğinizi bulabilmişsiniz. Bu noktaya kadar gelebilen birisinin bu soruyu neden sorduğunu ben anlamakta zorlanıyorum. Bulduğunuz link'i yeniden navigate edip; bu seferde o sayfa üzerinde links koleksiyonu içinde dolaşacaksınız. Hepsi bu.
Kullanıcı avatarı
hido
Üye
Mesajlar: 268
Kayıt: 29 Mar 2014 04:32

Re: İnternet explorer ile açılan sayfa içinde dolaşma

Mesaj gönderen hido »

thelvaci yazdı:Şaşırtıyor bazen buradaki arkadaşlarım beni. IExplore COM objesini kullanarak herhangi bir sayfayı navigate edebilmiş ve içindeki linklerde dolaşabilmiş arzu ettiğinizi bulabilmişsiniz. Bu noktaya kadar gelebilen birisinin bu soruyu neden sorduğunu ben anlamakta zorlanıyorum. Bulduğunuz link'i yeniden navigate edip; bu seferde o sayfa üzerinde links koleksiyonu içinde dolaşacaksınız. Hepsi bu.

Hocam sorunda tam da bu noktada başlıyor çöze bilsem zaten yardım istemem kurgulamyı kuramadım klik işleminden sonra exit deyince döngü devam etmiyor exit kullanmadığımda ise hata veriyor bilginiz varsa yardımcı olursanız sevinirim...
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: İnternet explorer ile açılan sayfa içinde dolaşma

Mesaj gönderen mrmarman »

Merhaba.

- Bir örnek hazırladım. Farkını kodlara bakarak anlayacaksın. :idea:

(1) Google taraması açılacak
(2) 'gold+bilgisayar' olarak aranacak.
(3) Arama sonuçlarında bulunan tüm 'www.gold.com.tr' içeren linkler önce tıklanacak.
(4) 2 saniye sonra GoBack komutu yardımı ile google tarama ekranına geri dönülecek.
(5) 3 nolu adıma geri dönülüp bir sonraki 'www.gold.com.tr' olan linke tıklanacak.

taa ki google tarama ekranında 'www.gold.com.tr' linki kalmayana kadar.

Kod: Tümünü seç

USES ComObj;

procedure TForm1.BitBtn1Click(Sender: TObject);
var
  I      : Integer;
  IEpp   : OleVariant;
  XLink  : String;
begin
  if (VarIsEmpty(IEpp)) then
  begin
    IEpp := CreateOleObject('InternetExplorer.Application');
    ShowWindow(IEpp.HWND, SW_SHOWMAXIMIZED);
    IEpp.Visible := True;
  end;
  IEpp.Navigate('https://www.google.com.tr/search?q=' + 'gold+bilgisayar');

  while (IEpp.Busy) do
  begin
    Sleep(1);
    Application.ProcessMessages;
  end;

  for I := 0 to IEpp.Document.Links.length - 1 do
  begin
    XLink  := IEpp.Document.Links.Item(I);
    if Pos( 'www.gold.com.tr', XLink ) > 0 then
    begin
      IEpp.Document.Links(I).Click;
      while (IEpp.Busy) do
      begin
        Sleep(1);
        Application.ProcessMessages;
      end;
      ShowMessage('Dolaşıldı, geri dönüyoruz..');
      IEpp.GoBack;
    end;
  end;
  ShowMessage('Başka Link Kalmadı...');
end;
Resim
Resim ....Resim
Kullanıcı avatarı
hido
Üye
Mesajlar: 268
Kayıt: 29 Mar 2014 04:32

Re: İnternet explorer ile açılan sayfa içinde dolaşma

Mesaj gönderen hido »

Hocam elinize sağlık mükemmel olmuş fakat sanırım ben tam olarak ne demek istediğimi anlatamadım :D

googla da gold.com.tr bulunacak ve gold.com.tr içinde ikinci bir arama yaptırmak istiyorum...
thelvaci
Kıdemli Üye
Mesajlar: 770
Kayıt: 11 Tem 2010 07:17
Konum: Istanbul
İletişim:

Re: İnternet explorer ile açılan sayfa içinde dolaşma

Mesaj gönderen thelvaci »

Kod: Tümünü seç

if XLink = 'http://www.gold.com.tr/bilgisayar_v' then 
gibi bir kodunuz var. Bu durumda aradığınız linki bulmuşsunuz demektir. Bundan sonra; yukarıdaki link içinde arama yapmak istiyorsanız;

Kod: Tümünü seç

IEpp.Navigate(XLink);
gibi bir şey lazım size.

Kısacası; aşağıdaki gibi bir şey lazım size. Delphi olmadan yazdım, eksik/hatalı kısımları siz düzeltirsiniz sanırım.

Kod: Tümünü seç

procedure SearchLink(const AURL : String; const Aranan : String = 'ne arıyorsanız buraya');
var
  iCounter : Integer;
  Found : Boolean;
  FoundItem : ?;
begin
  Found := false;
  IE.Navigate(AURL);

  for iCounter := 0 to IE.Documents.Links.Count - 1 do
  begin
    if IE.Documents.Links.Item(iCounter) = Aranan then
    begin
      Found := true;
      FoundItem := IE.Documents.Links.Item(iCounter);
      Break;
    end;
  end;  

  if Found then
    SearchLink('gold.com.tr linki buraya', 'aradığınız şey buraya');
 // Belki bu noktada FoundItem'ı da kullanırsınız. Ne yapmak istediğinizi siz biliyorsunuz.
end;
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: İnternet explorer ile açılan sayfa içinde dolaşma

Mesaj gönderen mrmarman »

hido yazdı:Hocam elinize sağlık mükemmel olmuş fakat sanırım ben tam olarak ne demek istediğimi anlatamadım :D

googla da gold.com.tr bulunacak ve gold.com.tr içinde ikinci bir arama yaptırmak istiyorum...
- Valla yapmka istediğinden; Google ile aranma yaparak, belirli bir sitenin linkine oradan tıklatıp HIT'ini arttırmaya çalışıyorsun sandım. Ne diyeyim. :D

- İyi de bana açıklar mısın ?! Arama yapacağın site belli ise neden direkt oranın arama kodunu kullanmıyorsun da Google ile arayıp gidiyorsun ?
Örneğin: http://www.gold.com.tr/Arama.aspx?text= ... +galaxy+s3 gibisinden...

Neyse istediğin şeyi yapan hali aşağıda... Derleyip toparladım.

Kod: Tümünü seç

USES ComObj;

Function AradigimLinkeTikla( strAra, strURL, strBulunacak: String ): boolean;
  procedure Bekle( IEpp: OleVariant );
  begin
      while (IEpp.Busy) do
      begin
        Sleep(1);
        Application.ProcessMessages;
      end;
  end;
var
  I, J   : Integer;
  IEpp   : OleVariant;
  XLink, XSayfa : String;
  boolGoogle : Boolean;
begin
  if (VarIsEmpty(IEpp)) then
  begin
    IEpp := CreateOleObject('InternetExplorer.Application');
    ShowWindow(IEpp.HWND, SW_SHOWMAXIMIZED);
    IEpp.Visible := True;
  end;
  IEpp.Navigate('https://www.google.com.tr/search?q=' + strAra);
  Bekle( IEpp );

  boolGoogle := False;
  Result     := False;
  while (i < Integer(IEpp.Document.Links.length) ) AND (NOT boolGoogle) do
  begin
    XLink  := IEpp.Document.Links.Item(I);
    if Pos( UpperCase(strUrl), UpperCase(XLink) ) > 0 then
    begin
      boolGoogle := true;
      IEpp.Document.Links(I).Click;
      Bekle( IEpp );

      J := 0;
      while (J < Integer(IEpp.Document.Links.length) ) AND (NOT Result) do
      begin
        XSayfa := IEpp.Document.Links.Item(J).Text;
        if Pos( strBulunacak, XSayfa ) > 0 then
        begin
          IEpp.Document.Links(J).Click;
          Result := True;
        end;
        Bekle( IEpp );
        inc(J);
      end;
    end;
    inc(i);
  end; // While
end;
Kullanımı : (Denenmiştir)

Kod: Tümünü seç

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
  //if AradigimLinkeTikla( 'bilgisayar', 'http://www.vatanbilgisayar.com', 'İletişim' )
  //if AradigimLinkeTikla( 'bilgisayar', 'http://www.teknosa.com', 'İletişim' )
  if AradigimLinkeTikla( 'bilgisayar', 'http://www.gold.com.tr', 'İletişim' )
    then MessageDlg('İşlem başarılı', mtInformation, [mbOk], 0)
    else MessageDlg('İletişim linki bulunamadı', mtError, [mbOk], 0);
end;
Resim
Resim ....Resim
Kullanıcı avatarı
hido
Üye
Mesajlar: 268
Kayıt: 29 Mar 2014 04:32

Re: İnternet explorer ile açılan sayfa içinde dolaşma

Mesaj gönderen hido »

Hocam teşekkür ederim. Google hit ile ilgisi yok zaten googlede o kadar aptal değil diye düşünüyorum...
Kullanıcı avatarı
Serhat
Üye
Mesajlar: 203
Kayıt: 27 Tem 2014 11:10

Re: İnternet explorer ile açılan sayfa içinde dolaşma

Mesaj gönderen Serhat »

Mrmarman ve hido fakat atladığınız bir durum var bence ilk sayfada olan bir link click işlemi gerçekleşir yada Google ilk 100 de ara diye bilirsiniz ama 150. satırdaki bir linki nasıl clickleme işlemi olacak :N)
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: İnternet explorer ile açılan sayfa içinde dolaşma

Mesaj gönderen mrmarman »

Serhat yazdı:Mrmarman ve hido fakat atladığınız bir durum var bence ilk sayfada olan bir link click işlemi gerçekleşir yada Google ilk 100 ara diye bilirsiniz ama 150. satırdaki link nasıl click olmaz ki :N)
- Atladığımı nereden çıkardın ? Ne yapıp yapamayacağımı biliyor gibi yazmışsın. :roll:
Resim
Resim ....Resim
Lord_Ares
Üye
Mesajlar: 1070
Kayıt: 15 Eki 2006 04:33
Konum: Çorlu

Re: İnternet explorer ile açılan sayfa içinde dolaşma

Mesaj gönderen Lord_Ares »

marman hocamın kodunu atlamışsınız diyerek eleştirmek yerine sizde bir örnek paylaşın bizlerde görelim öğrenelim. Sizde bilirsiniz ki temel kural her paylaşıma saygı duymaktır. Kodu denedim bahsettiğiniz sorundan eser yok, keşke sizde zahmet edip deneseydiniz Serhat arkadaşım. Ellerinize sağlık sayın marman hocam ve tuğrul hocam
Saygılarımla..
Cevapla