Php Bot Nasıl Yapılır ? WordPress’e Bot Entegre Etmek
Merhabalar Php bot konusuna çok geniş kapsamlı bir döküman hazırlamaya karar verdim.
Blog Takipcime gönderdiği mail için teşekkür ediyorum.. Videolu anlatım yapmak isterdim ama video epey büyük oluyor. bunlarlada uğraşmak haliye zor oluyor..
Neyse ilk olarak ne çekeceğimize karar vereceğiz. Ben bunun için WordPres e bir otomatik haber botu yazalım dedim. ve yazdım. Örnek erdinckoc.com.tr sitesi sadece bir php bot kendiliğinden haber ekleyip çalışmaktadır..
Böyle bir haber botu nun ne kadar basit yazılabileceğini göreceğiz..
İlk olarak haberleri çekeceğimiz siteyi belirliyoruz ve en iyi bu haberleri hangi sayfadan alabiliriz diye düşünüyoruz.
Ve bu bot u corontab a ekleyeceğimiz için aynı haberi iki kez eklememesi için Veritabanında arama yaptırıp var ise eklememesini sağlamalıyız..
Hemen Kodlamaya başlayalım..
Kaynak olarak internethaber in son dakika bölümünü kullancağız.. sizde benimle birlikte http://sondakika.internethaber.com adresine gidiniz.
Gördüğümüz gibi son dakika haberler listeli bir şekilde gözüküyor. Biz buradab en üstte olan haberi alacağız. ve 1 dk içersinde bot yeniden çalışacak. ve yeni haber eklenmiş se otomatik olarak yayınlayacak. Eğer yeni bir haber eklenmemişse aynı haber veritabanında var ise eklemeyecek..
Bu yazacağımız kodlamaları test edebilmeniz için bir adet wp kurulu siteniz olması gerekmektedir. Local de çalışmaz.
Corontabı Plesk panele göre anlatacağım. Cpanel ile ilgili dökümanlar zaten hemen hemen her yerde mevcut.
ilk olarak yapmamız gereken php taglarını açıp kaynağı almaktır…
<?php
$kaynak = file_get_contents(“http://sondakika.internethaber.com”);
?>
kaynak her sayfa açılışında 1 kereye mahsus alınır. yani sayfa açıldığı zaman kaynak tek sefer için alınır ve kaynak php önbelleğinde saklanır. yani siz bölme kesme işlemlerinde önbellekte ki kaynaktan faydalanırsınız..
bot yapmak basittir ancak işin mantığını kavramalısınız.
kodlar aslında sizlerin yaptıklarını yaparlar. bir siteye gidersiniz sağ tuş kaynağı görüntüle yaparsınız aslında bu file_get_contents te aynı görevi görür verdiğiniz adrese gider.
sağ tuş yapıp kaynağı görüntüler ve siz eo kaynağı işlemeniz için verir. o artık sizindir. sizin için bir metin gibidir. bir Word belgesi gibidir.
şimdi sözkonusu kaynağa gidip sağ tuş kaynağı görüntüle dediğinizde sayfanın html kaynağını görecekssiniz.
Şimdi bizim almamız gereken şey nedir burdan ?
Bu sayfada sadece konu başlıkları var. biz buradan en üstte bulunan haberin normal okuma url sini alacağız. bu sayfa ile başka işimiz yok.
O zaman ilk haber başlığını bulalım sağıdaki ve solundaki kodlara bakalım.
<a href=”
Gördüğünüz gibi url nin başında bu kodumuz var. Ama burada dikkat edilecek husus bu kodu sayfada ctrl+f yardımıyla aratın. bizim istediğimiz sonuç kaçıncı sırada bu çok önemli.
Bakınız. ben 3. sonuç bizim aradığımız sonuç olarak buldum.
Şimdi biz buradan haberin url sini alacağız ve o url de bulunan haberin başlığı, haberin resmi ve de haberin içeriğini alıp otomatik olarak wp ye eklenmesini sağlaycağız.
Birde haberin resmini kendi ftp mize çekeceğiz…
ilk olarak haberin urls ni alalım.
<?php
$kaynak = file_get_contents(“http://sondakika.internethaber.com”);
$bolum1 = explode(‘<a href=”‘, $kaynak);
$url = explode(‘”‘, $bolum1[3]);
$haberurl = $url[0];
?>
burada dikkat edeceğiniz husus, bolum1[3], neden 3 diye soracak olursanız, çünkü yukarıda belirtmiştik, bizim aradığımız kod sayfada çok fazla var, aradık. 3. sırada bulduk. o yüzden almak istediğimiz sırayı belirtiyoruz. oraya 4 veya 2 gibi sayılar yazsaydık. öncekini veya sonrakini alacaktık.
Kodu çalıştırdığımızda ilk haberin url sini aldığımızı göreceksiniz. iki kod birbiriyle ilişkilidir.
yani türkçeleştirirsek… <a href= bu kodu kaynakta ara 3. sonuca gel bu koddan sonraki kısmı al ” çift tırnak sonucunu bulana kadarki kısım..
yani kaynağa bakarsanız. buda bizim haberin url sinin olduğu kısımdır..
şimdi haberi alma bölümüne geçelim…
artık elimizde bir url var… yine bu url yi file_get_contents yardımıyla okuyalım, asıl istediğimiz kaynağa ulaşalım..
<?php
///////////////////////////////////////////////
$kaynak = file_get_contents(“http://sondakika.internethaber.com”);
$bolum1 = explode(‘<a href=”‘, $kaynak);
$url = explode(‘”‘, $bolum1[3]);
$haberurl = $url[0];
//////////////////////////////////////////////
$haberkaynak = file_get_contents(“$haberurl”);
?>
haberin kaynağını da böylece almış olduk. şimdi sizde rastgele bir habere tıklayın bakın nasıl gir görüntü ile karşılaşıyoruz. Almamız gereken kısımlar neresidir. diye ön bir çalışma yapın.
orda resim var haberin resmi. Kalın karakterler ile haberin başlığı ve alt kısımda da haberin içeriğini görebiliyorsunuzdur..
Şimdi sağ tuş kaynağı görüntüle diyelim. ve haberin başlığını almaya çalışalım… şöyle bir kaynağı gezdiğim de haberin resminin açıklamasının haberin başlığı olduğunu görüyoruz. yani haber resmi ile başlığını kolayca alabileceğiz.
Şimdi..
<link rel=”image_src” href=”
sayfanın kaynağında şu kodu arayıp bulduğunuzda hemen önünde resim url sini göreceksiniz. Resim url si bitişinde alt olarak ta haberin başlığını göreceksiniz. bu iki alınması gereken verimizi kolayca alalım..
<?php
///////////////////////////////////////////////
$kaynak = file_get_contents(“http://sondakika.internethaber.com”);
$bolum1 = explode(‘<a href=”‘, $kaynak);
$url = explode(‘”‘, $bolum1[3]);
$haberurl = $url[0];
//////////////////////////////////////////////
$haberkaynak = file_get_contents(“$haberurl”);
$haberbol1 = explode(‘<link rel=”image_src” href=”‘, $haberkaynak);
$haberresim = explode(‘” alt=”‘, $haberbol1[0]);
$haberbaslik = explode(‘”‘, $haberresim[1]);
$resim = $haberresim[0];
$baslik = $haberbaslik[0];
?>
ilk olarak haberbol1 değişkeni ile elimizde bulunan kaynağı böldük. ve artık elimizde daha basit bulunabilir bir kaynak mevcut oldu.
haberbol1 de ki kısımın üstünde kalan kodlar artık bizi ilgilendirimiyor.
o nedenle kaynak direk resim url si ile başlamış oluyor. buda bizim işimizi kolaylaştırıyor.
gördüğünüz gibi resmi ve haber başlığını gayet basitçe aldık..
Şimdi haberin içeriğini alalım. ve alım işlemlerini komple tamamlayalım..
haber içeriğinin hemen başındaki kodumuzu bulduk..
<span id=”contextual”>
haberin bitiş noktası ise </p></span></div>
şimdi haberimizi alalım.
<?php
///////////////////////////////////////////////
$kaynak = file_get_contents(“http://sondakika.internethaber.com”);
$bolum1 = explode(‘<a href=”‘, $kaynak);
$url = explode(‘”‘, $bolum1[3]);
$haberurl = $url[0];
//////////////////////////////////////////////
$haberkaynak = file_get_contents(“$haberurl”);
$haberbol1 = explode(‘<div><div><img src=”‘, $haberkaynak);
$haberresim = explode(‘” alt=”‘, $haberbol1[0]);
$haberbaslik = explode(‘”‘, $haberresim[1]);
///////////////////////////////////////////////////////////
$icerikbol1 = explode(‘<span id=”contextual”>’, $haberkaynak);
$habercek1 = explode(‘</p></span></div>’, $icerikbol1[1]);
$haber = $habercek[0];
////////////////////////////////////////////////////////////
$resim = $haberresim[0];
$baslik = $haberbaslik[0];
echo $haber;
?>
Gördüğünüz gibi sadece explode ile alıyorum. bunun yerine preg_match te kullanılabilir. Ancak desenlerle falan uğraşmayınız diye explode ile yapıyorum..
haberin içeriğinide aldık. şimdi haberin resmini kendi ftp miz de bulunan upload klasörüne copy yapalım….
bu konu aslında başka bir siteden kendi ftp nize dosya çekme yötemidir. bunu anlatmayacağım.
Kullanacağımız kodumuz sadece copy
Copy(kaynak resim adresi, kopyalanılacak ftp klasörü)
Şeklinde resmi veya dosyayı kendi ftpmize çekmiş oluyoruz..
Şimdi aldığımız bu başlık içerik vs. resim. Gibi argümanları wordpress te yayınlayalım. Veya isteyen arkadaşlar için Taslak olarak kaydettirelim.
Bunun için WordPress in wp_post fonksiynundan faydalanacağız..
Bu kısmı anlatmayacağım. Çünkü siteyi ararsanız. Bulabilirsiniz WordPress yazı ekleme diye arayın bulursunuz. Bu konuyu anlattık..
Ve Bu botumuzu corontab a ekleyip otobot olarak kullanmak kaldı. Plesk veya Cpanele giriyoruz..
Zamanlanmış Görevler (coron yada Corontab) gidiyoruz. Kullanıcımızı seçip zaman aralığını plesk 9.0 ve üstünde zaten anlatıma gerek yok. Checkboxlar ile yapıyorsunuz. Plesk 9.0 altı ve cpanel için se bütün zaman aralıklarına * koyarak botun her dakika çalışmasını sağlayabilirsiniz.
Pleskteki çalıştırılacak komut kımına şu kodu yazıyoruz;
/usr/bin/php -q /var/www/vhosts/site.com/httpdocs/bot.php
Şeklinde botunuzu çalıştırıyorsunuz.
Yukarıdaki bot kodlarını test etmeden yazdım. O nedenle hatalı olabilir. Kusura bakmayın. Takıldığınız kısımları Makale altında sorabilirsiniz
güzel anlatmışsın kardeş…
Bu kısmı anlatmayacağım. Çünkü siteyi ararsanız. Bulabilirsiniz WordPress yazı ekleme diye arayın bulursunuz. Bu konuyu anlattık. || Bu tür açıklama yerine link koymanız çok daha iyi olurmuş teşekkürler