cURL Dersleri

Spor Toto Süper Lig Fikstürü Botu Yapmak – 2 | 2013-2014

Geçtiğimiz günlerde spor toto bilgilerini geçen bir bot hazırlamıştım. Yalnız bu bot bilgileri tümden aldığı için pek ayrıntılı bir şey olmamıştı. Bugün oturdum ve sil baştan tekrar aynı siteden geçen bir bot yaptım. Bu sefer jQuery ile biraz görsellik vererek daha dinamik ve daha albenili olarak hazırladım.

Kodlarda baya ayrıntı olduğundan grup grup ayırarak kod bloklarında ne yaptığımı anlatarak kısa bilgiler vermeye çalışacağım.

Botu for döngüsünü kullanarak daha düzenli bir hale getirdim. Böylece verileri daha istikrarlı olarak çekme fırsatı yakalamış olduk. Botu gene cURL yapısını kullanarak hazırladım.

Şimdi ilk önce cURL bağlantımızı yapacak olan bağlantı fonksiyonumuzu oluşturalım.

Function Baglan($link){
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,$link);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch,CURLOPT_REFERER,"http://www.yandex.com.tr");
$Curl = curl_exec($ch);
curl_close($ch);
return $Curl;
}

Yukarıdaki gibi basit bir fonksiyon yapısı ile siteye bağlanmış oluyoruz. Bağlantımızın yandex üzerinden yaptığımızı belirtiyoruz. Böylece referans ile siteye bağlanmış olduk. İsterseniz bunu Google olarak düzenleyebilirsiniz.

Şimdi fonksiyonu kullanarak bağlanacağımız siteminin adresini yazalım ve değişken ile buna ulaşabilir hala getirelim.

$Baglan= Baglan("http://www.tff.org/Default.aspx?pageID=198");

Yukarıdaki gibi bağlanacağımız site adresini de yazdık. Şuan siteye bağlanmış durumdayız. İsterseniz echo komutu ile $Baglan değişkenini ekrana yazdırarak görebilirsiniz.

Şimdide verilerimizi basacağımız tablo yapısını oluşturalım ve sonra gerekli yeri for ile döndürüp bilgileri basalım.




<table border="0" cellspacing="0" cellpadding="0" class="puan_durumu">



<tbody>



<tr>



<th> </th>






<th> </th>



 



<th style="text-align:left">Takimlar</th>



 



<th width="30">O</th>



 



<th width="30">G</th>



   



<th width="30">B</th>






<th width="30">M</th>






<th width="30">Av</th>






<th width="30" style="font-weight:bold">P</th>



</tr>



Yukarıdaki ilk kısım tablomuzun başlık kısmı oluyor. Şimdi for yapımızı oluşturalım ve bunun içine preg_match_all ile desenlerimizi hazırlayıp, gelen verileri de tablo yapısındaki gerekli yerlere bastıralım.

for($a=1; $a <=18; $a++){
if($a < 10){$a = "0".$a;}
preg_match('@<a id="ctl00_MPane_m_198_1890_ctnr_m_198_1890_grvACetvel_ctl'.$a.'_lnkTakim" href="(.*?)">(.*?)</a>@si',$Baglan,$Takim);
preg_match('@<span id="ctl00_MPane_m_198_1890_ctnr_m_198_1890_grvACetvel_ctl'.$a.'_lblOyun">(.*?)</span>@si',$Baglan,$Oynanan);
preg_match('@<span id="ctl00_MPane_m_198_1890_ctnr_m_198_1890_grvACetvel_ctl'.$a.'_Label4">(.*?)</span>@si',$Baglan,$Galibiyet);
preg_match('@<span id="ctl00_MPane_m_198_1890_ctnr_m_198_1890_grvACetvel_ctl'.$a.'_lblKazanma">(.*?)</span>@si',$Baglan,$Beraberlik);
preg_match('@<span id="ctl00_MPane_m_198_1890_ctnr_m_198_1890_grvACetvel_ctl'.$a.'_lblPuan">(.*?)</span>@si',$Baglan,$Malup);
preg_match('@<span id="ctl00_MPane_m_198_1890_ctnr_m_198_1890_grvACetvel_ctl'.$a.'_Label5">(.*?)</span>@si',$Baglan,$Averaj);
preg_match('@<span id="ctl00_MPane_m_198_1890_ctnr_m_198_1890_grvACetvel_ctl'.$a.'_Label3">(.*?)</span>@si',$Baglan,$Puan);

echo'


<tr class="aaaa">


<td style="text-align:right">'.$a.'</td>




<td></td>




<td style="text-align:left">'.substr(stristr($Takim[2],"."),1).'</td>




<td>'.$Oynanan[1].'</td>




<td>'.$Galibiyet[1].'</td>




<td>'.$Beraberlik[1].'</td>




<td>'.$Malup[1].'</td>




<td>'.$Averaj[1].'</td>




<td style="font-weight:bold">'.$Puan[1].'</td>


</tr>


';
}

Yukarıdaki desenleri incelerseniz verilerin nasıl alındığı konusunda fikir sahibi olursunuz. Şimdi verileri de çektiğimize göre artık tablo yapımızı kapatabiliriz. For dışında kalan tablo kapatma etiketlerini de sona ekleyip botumuzu bitirelim.

</tbody>

</table>


Php kodlamaları olarak işlemlerimiz burada son buluyor. Şimdi çekmiş olduğumuz verileri bir tablo yapısına aktardık. Böylece verilerimiz düzenli bir biçimde görünmüş olacak. Bunu daha düzenli hala getirmek için birkaç css düzenlemesi yapalım. O düzenlemelerimizde şu şekilde olsun;

table.puan_durumu {background-color:#fff;color;#333;font:11px Tahoma}
table.puan_durumu tr.sampiyon {background-color: #FFE009!important;}
table.puan_durumu tr.uefa {background-color: #65C5F3!important;}
table.puan_durumu tr.even {background-color: #dcdcdc;}
table.puan_durumu tr.odd {background-color: #eaeaea;}
table.puan_durumu tr.kume {background-color: #333!important;color: #FFF!important;}
table.puan_durumu th {font-weight: bold;color: #C00}
table.puan_durumu td {text-align: center;border-bottom-width: 1px;border-bottom-style: solid;border-bottom-color: #F9F9F9;padding-top: 5px;padding-right: 4px;padding-bottom: 5px;padding-left: 4px;}

Yukarıdaki kodları yazdığımızda görünüm olarak güzel bir hal almış olacak. Ek olarak şampiyon, uefa ve küme düşenlerin belirtileceği css düzenlemeleri de hazırladım. Şimdi bunları jQuery ile atayalım ve ilk 2 şampiyonlar ligine, 3-4. sıradakileri uefa ligine ve son 3te yer alan takımların küme düştüğünü belirtelim.

İlk önce sayfamızın en tepesine jQuery kütüphanesini dahil ediyoruz. Kodlarımız da :eq ile indis numarasını belirterek .addClass’ı kullanarak işlemimizi tamamlıyoruz. Özel ligler dışında kalanları ise renkli listeleme dersindeki gibi renklendiriyoruz. Bunun için odd ve even kullanıyoruz.

$(".aaaa:even").addClass("even");
$(".aaaa:odd").addClass("odd");
$("table.puan_durumu tr:eq(1),table.puan_durumu tr:eq(2)").addClass("sampiyon");
$("table.puan_durumu tr:eq(3),table.puan_durumu tr:eq(4)").addClass("uefa");
$("table.puan_durumu tr:eq(16),table.puan_durumu tr:eq(17),table.puan_durumu tr:eq(18)").addClass("kume");

Botumuz kodsal ve görsel olarak artık hazır durumda!

Bundan daha da fazlasını geliştirmem artık. Başka bot paylaşımlarında görüşmek üzere 🙂

Türkçe Karakter Sorunu Düzenlemesi (05.08.2015)

Botu hazırladığımız site, charset olarak windows-1254 kullanmaya başladığından dolayı bir takım Türkçe karakter sorunları yaşanmaktaydı. Bu sorunu çözmek için kodlama türünü; UTF-8 ile BOM Olmadan Kodla seçilmelidir. Diğer değişiklikte aşağıda yer alan meta charset tanımlamasının, sayfanın en üstüne yazılmasıdır. Bu iki değişiklikle Türkçe karakter sorununu çözmüş olacağız.

Bir önceki yazım olan Spor Toto Süper Lig Fikstürü Botu Yapmak | 2013-2014 başlıklı makalemi de okumanızı öneririm.

İlgilizi Çekecek Konular

cURL Dersine Giriş: cURL Parametreleri Açıklamaları

ibrahim Çevrük

Php ile Basit Bot Yapımı (Uzaktan Veri Çekimi)

ibrahim Çevrük

Php ile Tinyurl.com Servisini Kullanarak Link Kısaltmak

ibrahim Çevrük

Yorum Giriniz