Autoit Tarayıcılarla çalışmak

Autoit Script Editor ile tarayıcılarla  çalışmaya inceleyeceğiz. bu bölümde internet Explorer tarayıcısını başlatacağız. Google araması yaptırdıktan sonra arama sonucunda çıkan linklerin bir listesini alıp bu linkleri Autoitmatik bir şekilde açtıracağım. daha sonra açtığımız sayfalardaki paragraflarda geçen ve bizim için özel olan kelimeleri site içerisinden alacağız. Bu işlem sırasında Autoit Script Editor de sıklıkla kullanılan ve bizim için çok önemli olan birkaç komutun kullanım şekilleri nedir şekillerine dair açıklamalar yapacağız.
 

Bu tip işlemler nerede kullanılabilir diye soruyorsanız ben şahsen Proxy ip adresleri kullandığım için Bu ip adreslerini belli başlı sitelerden Autoitmatik bir şekilde kopyalamak için ya da almak için kullanıyorum.
 

Bu örnek yeni başlayanlar için biraz karmaşık gelebilir fakat orta derecede Autoit bilgisi olan arkadaşlar kolaylıkla anlayacaklardır. örnekte kullanacağımız yeni komutların açıklamasını yapacağım.ilk başlarda biraz karmaşık gibi görünsede zamanla komutların birbirleriyle kombine bir şekilde kullanılmasını daha iyi kalacaksınız.
 

 

 

#include <ie.au3>
#include <Array.au3>
Local $baslat= _IECreate("https://www.google.com.tr/#q=zamanda+yolculuk")
_IELoadWait($baslat)
Local $oLinks = _IELinkGetCollection($baslat)
Local $iNumLinks = @extended
ConsoleWrite("Toplam bulunan link sayısı " & $iNumLinks)
Local $sTxt = ""
 
For $oLink In $oLinks
$sTxt &= $oLink.href & @CRLF
 
Next
ConsoleWrite("Link Info"& $sTxtt)
 
Exit

Evet programı başında bizim için gerekli olan iki tane #include tanımladık. İnternet Explorer  ile alakalı Komutları kullanırken #include ie.au3 komutunu kullanmamız gerekiyor. diğer #include komutu ise #include <array> string (kelime) işlemleri için gerekli. Evet birinci satırda local başlat isimli bir değişken tanımladık ve bu değişikenimizin içeriği " Zamanda Yolculuk " şeklinde bir Google araması yapıyor. artık başlat değişkenimiz bizim için bu Google sayfasını temsil ediyor.

Local $baslat= _IECreate("https://www.google.com.tr/#q=zamanda+yolculuk")

ikinci satırda ise _IELoadWait($baslat) ile  başlattığımız bu tarayıcının sayfayı yüklemesini beklemesini sağlıyoruz. eğer sayfayı yüklenmesini bekletmeseydik program daha Google linkleri çıkmadan bir sonraki satıra geçecekti. ve biz de almak istediğimiz linkleri alamayacaktır. sonuç olarak tarayıcının Açtığı sayfayı yüklemesini bitirene kadar programın beklemesini istiyorsak bu _IELoadWait( ) komutuna ihtiyaç duyuyoruz. şimdi bir sonraki satırda ( artık tarayıcınız sayfayı yüklemeyi bitirdiği için ) tarayıcının bize listediği linkleri  başka bir değişkenin  atıyoruz.

Local $oLinks = _IELinkGetCollection($baslat)

yukardaki komut tarayıcının bize sunduğu linklerin tamamını $oLinks değişkeninin içerisine aktarır. 

buraya kadar daha önce bahsettiğimiz değişkenler kullandık.

Local $sTxt = "" değişkenini  daha sonra kullanmak üzere "" işaretleri ile boş bırakıyoruz.gelelim for ve Next döngüsünün kullanım şekli de şekline. for Next komutu belli bir sayıda döngü yaratmak için kullanılır. tarayıcıdan Yaklaşık 90 tane link aldığımıza göre bu linkleri Tek Tek Autoit Script Editor konsoluna yazdırmanız gerekiyor. bu yazdırma işlemini de for Next komutuyla yapacağız. tarayıcıdaki mevcut linklerin konsola yazılma işlemi bittikten sonra programımız for Next döngüsünden çıkacaktır ve program bir sonraki satırdan  çalışmaya devam edecektir.

 

 

For $oLink In $oLinks ;($olinks değişkeni burada bulunan link sayısını içerir)
$sTxt &= $oLink.href & @CRLF ;$oLink.href ise listedeki linklerden birisidir. &nbsp;(@CRLF)&nbsp;</p>
next
ConsoleWrite("Link Info "& $sTxtt)

yukardaki  &= sembolleri ile değişkenimizin içeriğine linkleri tek tek ilave ediyoruz. & SEMBOLÜ kelimeleri birbirine eklemek için kullanılır

hemen örnek verelim 

$metin=""      ; metin değişkeninin içeriği boştur

$metin&= "Bu "    ; $metin değişkenimizin içeriği Bu kelimesi oldu

$metin&= "bir "    ; $metin değişkenimizin içeriği Bu bir cümlesi oldu

$metin&= "kelimelerin"    ; $metin değişkenimizin içeriği Bu bir kelimelerin cümlesi oldu

$metin&= "birbirlerine ilavesi"    ; $metin değişkenimizin içeriği Bu bir kelimelerin birbirlerine ilavesi cümlesi oldu

$metin&= "örneğidir."    ; $metin değişkenimizin içeriği Bu bir kelimelerin birbirlerine ilavesi örneğidir. cümlesi oldu

$metin&=   @CRLF     ;metin değişkenin içeriğine CRLF ( Yani Enter tuşu.. CR=CARRIAGE RETURN ve LF=LINE FEED manasındadır) ilave ettik. 

yukardaki örneği tekrar inceleyelim.

$sTxt   &=    $oLink.href    &    @CRLF  

$sTxt değişkene her defasında bir link eklemiş + crlf ( enter ) da eklemiş.

 

 

$sTxt değişkenimizin içeriği boştu. Varsayalım google aramasında 3 sonuç çıktı.

http://www.zamandayolculuk.com

https://eksisozluk.com/zamanda-yolculuk--32902&rct=j&frm

http://gizliilimler.tr.gg/Einstein-h-in-%2526%2523304%253Bzafiyet-Teorisi-Ve-Zamanda-Yolculuk      Bunlar linklerimiz olsun

 

demek ki for-next döngümüz 3 tur atacak ve her turda $sTxt değişkenimizin içeriği şu şekilde değişecek... 

1. turda $sTxt="http://www.zamandayolculuk.com@CRLF "

2. turda $sTxt="http://www.zamandayolculuk.com@CRLFhttps://eksisozluk.com/zamanda-yolculuk--32902&rct=j&frm@CRLF"

3. turda $sTxt="http://www.zamandayolculuk.com@CRLFhttps://eksisozluk.com/zamanda-yolculuk--32902&rct=j&frm@CRLFhttp://gizliilimler.tr.gg/Einstein-h-in-%2526%2523304%253Bzafiyet-Teorisi-Ve-Zamanda-Yolculuk@CRLF"

 

Tüm linkleri $sTxt değişkeninin içeriğine topladık ve ekranda linkleri görmek içinde 

ConsoleWrite("Link Info"   &    $sTxtt)

 

Google arama sonuçlarında " zamanda yolculuk " ile alakası olmayan sonuçlarda çıkmıştı. şimdi bu işimize yaramayan sonuçları link listesinden ayıklamak için if-endif komutunu kullanacağız. if-endif komutu koşul komutudur. Eğer listemizde  if komutuyla belirttiğimiz kelimeler varsa sadece bu kelimelerin olduğu linkleri bize gösterecektir. örneği incelediğimizde her link yığınının içinde "zaman" ve "url=http" kelimeleri varsa bu linki konsola yazdıracağız. içerisinde " zaman" ve " url=http" kelimeleri geçmeyen linkleri elemiş oluyoruz.

 

For $oLink In $oLinks  ;  Linkler bitene kadar aşağıdaki satırları çalıştırır.
if StringInStr($oLink.href ,"zaman") and StringInStr($oLink.href , "url=http") then ;Linkte zaman ve url=http kelimeleri varsa...
ifStringInStr($oLink.href,"webcache") then ;webcache kelimesini istemiyoruz
 
;webchache varsa program burayı çalıştırır. kod girmedik.
 
else ;webchache yoksa aşağısı çalışır
 
$sTxt &= $oLink.href &  ","
$sTxtt &= $oLink.href & @CRLF
 
EndIf ; yukarıda 2 tane if komutu kullandığımıza göre ..
 
EndIf ; kapanışta da 2 tane endif olmak zorundadır.
 
 
Next ;linkler bitene kadar For $oLink satırına geri döner

 

If Endif komutunun çalışmasını ya da nasıl çalıştığını daha iyi anlamak için aşağıdaki örneği inceleyelim. eğer if komutuyla belirttiğimiz şartlar oluşursa program If Endif arasındaki Komutları çalıştırır bu örnekte if satırında şunu demek istenmiştir. eğer saat 01 ve dakika eşittir 45 ise Bilgisayarı kapat. programımız her 30 saniyede bir If Endif  satrınıa gelecek ve saate ve dakikaya bakacak Eğer Saat ve dakika bizim belirttiğimiz eşitlikte ise bilgisayar kapatacak Eğer değilse bir sonraki satırdan çalışmaya devam edecektir. Burada 2 koşul şart koştuk. yani hem Saat 01 olmalı ve aynı zamanda dakikada 45 i göstermelidir Eğer bu koşullardan sadece bir tanesi geçerliyse if komutu kendinden sonraki gelen komutu çalıştırmaz.
 

while 1 ;while 1 komutu ile sonsuz bir döngü başlatılır.
sleep(30000) ;30 saniye bekle
if @hour="01" and @min="45" Then ; Saat 01 ve Dakika 45 ise shutdown(9) komutunu uygular.
Shutdown(9) ; bilgisayarı kapatma komutudur.
EndIf
 
WEnd ;while satırına geri döner

Eğer örneğimiz şöyle olsaydı saat ya da dakikanın doğru olması halinde bilgisayarımızı kapatacaktır. 

if @hour="01" or @min="45" Then  ; Saat 01 ve Dakika 45 ise shutdown(9) komutunu uygular. 

   Shutdown(9) ; bilgisayarı kapatma komutudur. 
EndIf 

if saat=1 veya dakika=45 anlamındadır. and kullanırsak her 2 koşul da dogru olmak zorundadır. or kullanırsak koşullardan birisi varsa if gerçekleşir. 

başka bir örnek .. 

 if @hour="01" and @min="45" and @sec="11"Then  ; Saat 01 ve Dakika 45 ve saniye 11 ise..

 if @day="15" and @mon="11 and @year="2016" then ;o ayın 15nci günü ve 11nci ay ve sene 2016 ise anlamındadır.

Burada anlaşılıyor If Endif komutu koşulları ve sorgulama sonuçlarını öğrenmek için her programda defalarca kullanılır. kullandığınız tarayıcının Google Chrome ya da Firefox , çözünürlüğünün 1024x768 olup olmadığı ya da oynadığınız oyunlar da merminin bitip bitmediği yada bir tuşa yda tuş kombinasyonlarına ( crtl alt del  gibi ) basıp basmadığınız hep bu komutla kontrol edilir. 

if (koşul1 ve koşul2) veya koşul3 then 

.... koşullar oluşmuşsa burası çalışır

else  ; değilse komutlar satırı çalışır

komutlar

endif

 

Yukarıdaki örnekte Eğer koşul bir ve koşul 2 gerçekleşmişse veya sadece koşul 3 gerçekleşmişse program bir alt satıra geçer ve o satırı çalıştırır. eğer Yukarıdaki koşullardan hiçbir gerçekleşmemişse program else komutana gider ve " komutlar " satırını çalıştırır.

if  @DesktopWidth="1024" and @DesktopHeight="768" then  ;ekran çözünürlügümüz şunlar ise

consolewrite("Ekran çözünürlüğü programın çalışması için uygun") ;bu satıtrı çalıştır

else ; aksi halde

consolewrite("Bu program sadece 1024x768 çözünürlükte çalışır") ; bu satırı çalıştır

endif

 

Işte yukarıda Google sonuçlarındaki link yığını içerisinde istediğimiz linklerin olup olmadığını da if endif komutuyla filtre etmiştik. şimdi geldik filtrelediğimiz url'leri tek tek açıp paragraf içerisinde geçen "zaman" ve "yolcu" kelimelerininin olduğu paragrafları konsola yazdırma işlemine. 
 

$sTxt &= $oLink.href   &   "," komutuyla filtre ettiğimiz url adlarını $sTxt değişkeninin içerisine atmıştık. ve daha sonra split (ayırmak) için  "," karakterini her linkin sonuna eklemiştik. 

 

$oo=StringSplit($sTxt ,  ",")  ;$oo değişkeninin içeriğini "," karakterinden ayır

For $t=1 to $oo[0]  ; Buradaki $oo[0]  değişkeni kaç adet link sayısını verir. 
   Local $o = _IECreate($oo[$t]) ;   $t her defasında 1 artacağı için 1. linkten başlayarak url adlarını taraycıda açar.
 $o = _IEBodyReadText($o)  ; Açılan sayfadaki metinleri $o değişkeninin içerisine kopyalar

$o = StringSplit($o,@CRLF)  ; $o değişkeni içerisindeki metni satırbaşlarından ayırır (split)
for   $m=1 to $o[0]  ; yukarıda bölünmüş paragraflar son bulana dek ... 
   if StringInStr($o[$m],"zamanda") and StringInStr($o[$m],"yolcu") Then   ; paragrafların içerisinde kelimelerimiz varsa.... 
   ConsoleWrite($o[$m] & @CRLF& @CRLF)  ; bu paragrafı konsola yaz
EndIf


Next ; döngüne geri dön (yani for komutunun olduğu satıra) 1.For $t=1 to $oo[0]  
   Next; döngüne geri dön (yani  for komutunun olduğu satıra) 2. for   $m=1 to $o[0]


Yukarıdaki örnekte belki anlamakta zorlanacağınız komut StringSplit() komutudur. bu konuda Daha önce değinmiştik bu komut değişken içerisindeki karakterleri ya da kelimeleri bizim belirttiğimiz " ayıraç"lardan böler. değişken içerisinde kaç tane ayraç kullanırsak o sayıda split yani parça oluşur Bu komutu daha iyi anlamak için ufak bir örnek verelim.

 

include <Array.au3>
$degisken = "bu cümle virgül işaret,lerinden parçalara ,ayrılacaktır. ve bu parçarlar ,daha sonra tek ,tek yazılacaktır."
$virgullerdenayir = stringsplit ($değisken, ",")
_arraydisplay($virgullerdenayir)

bu komut gerçekleştiğinde Cümle içerisindeki , işaretleri bizim araçlarımız olduğu için bu cümleyi beş parçaya verecektir. array Display komutuyla ekranı açılan pencerede ayırma işlemine daha net bir şekilde kavrayacağız.
artık yeni değişkenlerimiz oluştu. 

$virgullerdenayir[0] ; bu değişkende toplam split sayısı yazılıdır
 
$virgullerdenayir[1] ;1 parça içeriği "bu cümle virgül işaret"
 
$virgullerdenayir[2] ;2 parça içeriği "lerinden parçalara "
 
$virgullerdenayir[3] ;3. parça
 
$virgullerdenayir[4] ;4. parça
 
$virgullerdenayir[5] ; 5. parça

Cümlemizi ya da değişkenimizi virgül "," işaretinden parçalara ayırdık ve toplamda 6 yeni değişkenimiz daha oluştu. varsayalım biz bu değişkenlerin içerisinde geçen bu kelimesinin hangi değişkende geçtiğini bulmak istiyoruz. ve sadece o değişken içeriğini ekrana yazdırmak istiyoruz. işte burada for Next döngüsüyle oluşturulan parçalar sayısı kadar bir döngü oluşturuyoruz. $virgullerdenayir[0] ın içeriği 5'ti ve bu döngünün içinde de istediğimiz kelimenin geçip geçmediğini if komutuyla sorguluyoruz. bu örnekler örnekler örnekte $virgullerdenayir[0] değişkeninin içeriği parça sayısı olduğu için for komutunu birden bu değişkenin içindeki parça değere kadar döndüreceğiz.

For $k=1 to $virgullerdenayir[0] ;$k=5 yani $virgullerdenayir[0]'ın içeriği olana kadar for-next arasında gidip gel. 

if stringinstr($virgullerdenayir[$k], "bu" ) then  ;$k şuan 1 olduğuna göre $virgullerdenayir[1] in içinde "bu" kelimesi varsa alt satırı uygular.

consolewrite ($k &"ncı parçdada kelime bulundu" & @CRLF) ;

endif 

next ; $k değeri $virgullerdenayir[0] değerine eşitse ( $k= $virgullerdenayir[0] ise ) alt satırdan devam et. değilse geldiğin For komutuna geri dön. 

 

 

 

For komutunu değeri maksimum d&r d&r ulaştığında Yani beş olduğunda program for Next döngüsünden çıkacaktır. her defasında for değeri beş Olana Kadar Next komutu programı for satırına yönlendirecektir. eğer for değeri 5 olmuşsa program Next komutunun biraz satırında 16 satırından akışına devam edecektir.

 

Kategoriler: 

Etiketler: 

Yeni yorum ekle

Filtered HTML

  • Web sayfası ve e-posta adresleri otomatik olarak bağlantıya çevrilir.
  • İzin verilen HTML etiketleri: <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Satır ve paragraflar otomatik olarak bölünür.

Plain text

  • Hiç bir HTML etiketine izin verilmez
  • Web sayfası ve e-posta adresleri otomatik olarak bağlantıya çevrilir.
  • Satır ve paragraflar otomatik olarak bölünür.
CAPTCHA
This question is for testing whether or not you are a human visitor and to prevent automated spam submissions.
Resimli CAPTCHA
Resimde görünen karakterleri girin.