1 Aralık 2017 Cuma

PHP İle bot yapımı

Hiç yorum yok


Merhaba arkadaşlar bugün sizlere PHP'de bir web sitesinden veri çekmeyi göstereceğim.
Aslında mantıksal olarak kolay birşey ancak sizler bu kodu geliştirerek kendi veritabanınıza kayıt ettirebilirsiniz.

Şimdi kodlara başlayalım.

PHP ile Web sitesinden İçerik Çekmek

Bu işi yapmak için en basitinden file_get_contents() fonksiyonuna sahibiz. İçerisine yazazacağımız ilk parametredeki adrese girip kaynağı bir değişkene yüklememizi ya da ekrana yazdırmamızı sağlar.

Örnek bir kod;
$site = "www.visualdersleri.blogspot.com.tr";
$icerik = file_get_contents($site);
echo $icerik;

Bu örneği çalıştırdığımızda file_get_contents() fonksiyonu sayesinde //www.phpr.org adresine girip sitenin kaynağına ulaşıp o kaynağı ekrana yazdırdık.

Sitelere ulaşmanın bir başka yolu yolu ise curl fonksiyonlarıdır. Curl fonksiyonları sayesinde bir adrese girmekle kalmayıp aynı zamanda girilen adrese form verileri gönderebiliriz ve kullanıcı girişi yapabiliriz. Yani PHP’de curl sayesinde sitelere aynı bir gerçek kullanıcıymış gibi, bir browserda gezer gibi girebiliriz.


Örnek ;

function curl($url, $post=false)
{
    $user_agent = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; tr; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6';
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_POST, $post ? true : false);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $post ? $post : false);
    curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);
    $icerik = curl_exec($ch);
    curl_close($ch);
    return $icerik;
}

Bu fonksiyonu aynı file_get_contents fonksiyonu gibi kullanabilirsiniz. Eğer bir post verisi gönderecekseniz 2. parametreyi “kullanici=musa&sifre=123456” şeklinde kullanmanız gerekecek.

echo curl("//www.wordpress.com/wp-login.php", "user_login=kullanici&user_pass=sifre");

Bu örnekde ise wordpress.com/wp-login.php'ye giriş yaptırıyoruz.

Şimdi bir web sitesinden sadece belirli bir kısmını yani sizin istediğiniz içeriği çekmeyi göstereceğim.

Kendinize bir site belirtin ben https://www.mgm.gov.tr/tahmin/il-ve-ilceler.aspx 
bu siteyi kullanacağım. 

Şimdi siteden ben anlık havadurumunu çekeceğim. Anlık hava durumu İstanbulda 16.6 olarak gösteriyor. Şimdi ben bu 16.6 verisini çekmek istiyorum. İlk olarak 16.6 yazısına sağ tıklayıp kodlarına bakalım. Kodlarını ben buldum kodları bunlar;

<td class="temp ng-binding" ng-bind="sondurum[0].sicaklik | comma">16,6</td>

olarak gösteriyor. Şimdi ise bize bu kodda lazım olan kısım class="temp ng-binding" burası oluyor. Neden diye sorarsanız class anasayfada tek oluyor birden fazla var ise array ile istediğiniz veriyi belirtebilirsiniz.

$icerik = file_get_contents($site);
$sicaklik = ara('class="temp ng-binding">', '</td>', $icerik);
echo $sicaklik[0];

Sitede bulunan class="temp ng-binding" adlı class verisinin içinde yazanı bizim ekranımıza yazdır olarak tanımladık.

Kısaca bot içerik alma mantığı sitelerdeki içeriklerin ayırt edici aralıklarını bulup o kısmı almaya dayanmaktadır. Bunların dışında hayal gücünüzü kullanarak daha bir çok mantık üretebilir ve her türlü içeriğe ulaşıp dilediğiniz botları kodlayabilirsiniz.

Hiç yorum yok :

Yorum Gönder

b2b yazılım vois media