PHP Bot (Sitegezer) İle Başka Sitelerden Veri Çekmek 32

Merhaba arkadaşlar bugunki makalemde başka sitelerdeki bilgilere nasıl ulaşabiliriz ve onları nasıl veritabanımıza kaydettirriz. Bunun hakkında biraz soru geldi bende böyle bir makale yazmaya ihtiyaç duydum.
İlk olarak phpmyadmin ile bir data veritabanı olusturdum, daha sonra içinede 3 alanlı bir tablo yaptım . Tablo adı fikralar ve alanları sırasıyla id,f_baslik,f_fikra
id int olcak
diğerlerinin text yapamak yeterlidr.
Öncelikle MySql ile bağlantımızı oluşturacak ayar.php dosyamızı oluşturalım. Kodlarımızın yanına gerekli açıklamaları yazacağım.

[ad#orta]

$dbhost		="localhost";
$dbuser		="root";//kullanım adımda root
$dbpass		="123";//benim şifrem 123 olduğu için 123 yazıyorym
$dbadi		="data";//Burada phpmyadmin kısmından oluşturulan veri tabanının adı olacak
$baglanti=@mysql_connect($dbhost,$dbuser,$dbpass) or die("Veri tabanı ile bağlantı sağlanamıyor!");
mysql_select_db($dbadi,$baglanti) or die("Veri tabanına bağlanılamadı!");

Şimdi hosta ve veritabanımza bağlantımız sağlıklı bir şekilde gerçekleştiyse. Bot yazımına geçebiliriz. Aşagidaki php dosyasını bot_kayit.php olarak kayit ettim.

include("ayar.php");//Burası mysql ile bağlantıyı yapan kısımdır ayar.php den kodlarını ayarlayabilrisin.
 
$site=file_get_contents("http://siteadi.com"); // Buraya sitenin adını yaziyoruz
$baslikalan='#<div>(.*?)<\/div>#si';//Burası çekeceğimiz hangi aralık olacak siz isterseniz buraya title veya id'li bir div veya resim,video ne çekicek iseniz onun ilgili kısmını yaabilirsiniz. (.*?) bizim bu div içindeki bütün verileri almamızı sağlıyor.
preg_match($baslikalan,$site,$baslikfonksiyon);//Veriyi bölerek burdan istediğimizi çekiyoruz.
$fikraalan='#<div>(.*?)<\/div>#si';//Buralar aynı yuarı ile
preg_match($fikraalan,$site,$fikrafonksiyon);
 
$fikra=$fikrafonksiyon[1];//Bu çektigimiz veriler preg_match fonksiyonuyla bir diziye aktarılır bu yüzden dizidekileri bir degiskene aktariyoruz. Ve öyle kullanım kolay olucaktir.
$baslik=$baslikfonksiyon[1];
 
echo " $baslik </br> $fikra ";//Bunu göstermek veya göstermemek senin elinde. Verinin gelip gelmediğini kontrol ediyoruz.
 
$sorgu=mysql_query("SELECT * FROM fikralar WHERE f_baslik='$baslik'");//Burada daha önceden aynı fıkra adıyla kayıt olan varmı diye sorguluyoruz.
if(mysql_num_rows($sorgu)>0)//Eğer 0 dan büyükse önceden aynı fıkra adı ile kayıt olan var demektir.
{
echo "$baslik ile kayıtlı fıkra bulunmaktadır. Lütfen farklı fıkra adı giriniz.";
}
else
{
$sor=mysql_query("INSERT INTO fikralar(f_baslik,f_fikra) values('$f_baslik','$f_fikra')");//Kayıt yapan sorgu
if($sor)//Kayıt yapıldımı diye bakıyoruz
{
echo "Kayıt işlemi başarıyla gerçekleşti";
}
else
{
echo "HATA! Kayıt yapılamıyor..";
}
}

Yukarıda sadece sitedeki bir adresten bir tane içeriği çeker. Tabiki botun 1 tane için olması çok saçma gelebilir. Bunu geliştirmek çok kolaydır. Bir döngü ile eğer fıkralar sıralı bir şekilde geliyorsa,
Örneğin fikra1,fikra2 vs. şeklinde bunu bir döngü ile sürekli arttırarak bütün fıkraları çekebilir ve kaydedebiliriz.
Bu daha çok çok çok geliştirebilir.
Arkadaşlar elbetteki bu makale çok basit bir şekilde bot yapımını ve kaydetme işlemini anlatmış bulunmaktayım. Çünkü bu işin temelini size verebileyim ki siz de kendinizi geliştirme imkanı bulubalin. Sorularınızı yorumlar kısmından sorabilirisiniz.

32 thoughts on “PHP Bot (Sitegezer) İle Başka Sitelerden Veri Çekmek

  1. Reply Ramazan Eyl 3,2010 16:43

    Merhabalar Oncelikle Cok Guzel Bir Konu Oldugunu Ve Guzel Bir Anlatım Oldugunu Soylemeliyim. Benim Sorum Su;

    Ben Guvenlik Parola Korumalı Bir Panel'den .Php Sayfalarını Cekmek İstiyorum Fakat Bunun Guvenli Olup Olmadıgını Bilmiyorum. Bana Bu Konuda Acıklık Getırırsenız Sevinirim.

    Simdiden Tesekkurler…

  2. Reply Ramazan Eyl 3,2010 17:44

    Dosyaları Cekmem Mumkunmu Yani Bir Takıma?

  3. Reply Hasan Huseyin İŞLE Eyl 3,2010 18:10

    Bir hosstan php uzantılı bir dosyayı çektiğinde gelen dosya boş gözükür. Yani amacın o dosyayı çekip kodlarını kendi hostunda çalıştırmaksa zaten dosyanın bulunduğu host kendisi yorumlar anca öyle gönderir. Yani hiç bir şekilde dosyadaki kodları çekme imkanı yoktur. Chmod ayarlarını değiştirmekte kar etmemektedir. sonuç yine aynı olacaktır. Kısacası php kodlarını çekince yorumlar ve yorumlanmış php sayfasındada php kodları içermez. Kısacası çekmen mümkün değildir bilgilerim doğrultusunda. Umarım yardımcı olabilmişimdir.

  4. Reply sohbet Kas 16,2010 09:09

    Çok güzel birmakale ve çalışma olmuş ama benim sorum şu siz resim video vs vs gibi şeyler çekebilirsiniz demişsiniz ama ben örneğin bir haber sitesinden bilgi çekmek isitiyorum ve çekeceğim bilgi diyelimki div ler içinde ama o sayfada 10 larca div var hangi divler arasındaki bilgiyi çekeceğimi nasıl bulabilirim . ? Şimdiden teşekkürler.

  5. Reply Samet Ara 4,2010 03:07

    "Preg_match"yerine daha basit olan "Explode" kullanılabilir, veriyi daha kolay bölmek ve işin mantığını anlamak bakımından.

  6. Reply cet rulet Oca 30,2011 06:23

    yorum yapan bot ta yapsan ıyı olur be keske sneın kadar php kodu bılgım olsaydı usenmez yapardım sayın admınım otomatık backlınk atan bot yapımı falan cok ta ıyıye satarsın

  7. Reply Hasan Huseyin İŞLE Oca 30,2011 19:29

    Her şeyin bir zamanı vardır elbet ama ben bu yorum yapan botlara gıcık oluyorum…. Öle bir şeyle uğraşmam bile… Site sahiplerine yazık…

  8. Reply berk Mar 30,2011 21:29

    merhaba

    $baslikalan='#(.*?)#si';

    bu kısmı anlamadım tam olarak nasıl düzenliyoruz burayı

  9. Reply Hasan Huseyin İŞLE Mar 30,2011 23:14

    O divin içinde kalan kısım makalenin başlığıdır. Oradaki düzenlemeleri PHP REGEX diye bakabilirsin. Orada kullanılan işaretler ve anlamlarını regex konusuna girer. google de araştırarak bulabilirsin.

  10. Reply berk Mar 31,2011 13:24

    yanıt için teşekkürler, ancak ben php konusunda uzman değilim. arattığımda açıklayıcı bilgiye ulaşamadım ya da ben anlamıyorum. burada anladığım çekmek istediğin sayfadaki div kısmının id si girilecek. ama nasıl? baska düzenleme yapacağımı sanmıyorum bu haliyle id yi nasıl yazarım onu öğrensem yeter bana.

    @Hasan Huseyin İŞLER

  11. Reply susak Haz 17,2011 16:57

    Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /var/www/bot_kayit.php on line 17

    bu hatayı alıyorum kayıt yapmıyor 🙁

    • Reply hsnhsynisler Haz 17,2011 23:01

      17. satır veya 16. satıra bak oradaki sorgu da hata var $ değişken basına koymamıs olabilirsin kodlarını göremeden tam olarak bişey de diyemiyorum.

      • Reply susak Haz 18,2011 11:14

        Evet acemilik $ nin tekini kaçırmışım yardım için teşekkürler çok güzel çalışıyor. Şimdi kodların üstünde denemeler yapıp geliştirmeye çalışıyorum.

  12. Reply fsdf Eyl 2,2011 15:05

    çok teşekkürler.
    şöyle bir şey olsa mesela ziyaretçi sitemizde arama yaptı. Arama sonuçlarına beğendiğimiz siteleri de dahil etsek yani ziyaretçimiz bizim istediğimiz yere gitse. Ya da bir kaç sitemiz varsa onlardan bot yoluyla mı arama yaparız.

  13. Reply Murat Eki 9,2011 20:23

    Aynen denileni yaptin ancak kayit yapmadi.
    Daha sonra

    $sor=mysql_query("INSERT INTO fikralar(f_baslik,f_fikra) values('$f_baslik','$f_fikra')");//Kayıt yapan sorgu

    satirini

    $sor=mysql_query("INSERT INTO fikralar(f_baslik,f_fikra) values('$baslik','$fikra')");//Kayıt yapan sorgu
    diye degistirdim sorunsuzca kayit yapmaya basladi. Tesekkürler

  14. Reply Oğuzhan Aslan Kas 14,2011 01:24

    Güzel bir konu olmuş. Kayıt etme konusunada değinirseniz çok iyi olur.

  15. Reply deniz özmen Ara 6,2011 01:50

    bir Sorunum var kodlar hatalı yazılmıs Galiba bir kaç kod ekledim ama Sunu sormam lazim

    Bu bot_kayit.php
    <?php
    include("ayar.php");//Burası mysql ile bağlantıyı yapan kısımdır ayar.php den kodlarını ayarlayabilrisin.

    $site=file_get_contents("http://eterna.com.tr/eterna/&quot;); // Buraya sitenin adını yaziyoruz
    $baslikalan='#<div>(.*?)</div>#si';//Burası çekeceğimiz hangi aralık olacak siz isterseniz buraya title veya id'li bir div veya resim,video ne çekicek iseniz onun ilgili kısmını yaabilirsiniz. (.*?) bizim bu div içindeki bütün verileri almamızı sağlıyor.
    preg_match($baslikalan,$site,$baslikfonksiyon);//Veriyi bölerek burdan istediğimizi çekiyoruz.
    $fikraalan='#<div>(.*?)</div>#si';//Buralar aynı yuarı ile
    preg_match($fikraalan,$site,$fikrafonksiyon);

    $fikra=$fikrafonksiyon[1];//Bu çektigimiz veriler preg_match fonksiyonuyla bir diziye aktarılır bu yüzden dizidekileri bir degiskene aktariyoruz. Ve öyle kullanım kolay olucaktir.
    $baslik=$baslikfonksiyon[1];

    echo " $baslik $fikra ";//Bunu göstermek veya göstermemek senin elinde. Verinin gelip gelmediğini kontrol ediyoruz.

    $sorgu=mysql_query("SELECT * FROM fikralar WHERE f_baslik='$baslik'");//Burada daha önceden aynı fıkra adıyla kayıt olan varmı diye sorguluyoruz.
    {
    echo "$baslik ile kayıtlı fıkra bulunmaktadır. Lütfen farklı fıkra adı giriniz.";
    }
    {
    $sor=mysql_query("INSERT INTO fikralar(f_baslik,f_fikra) values('$f_baslik','$f_fikra')");//Kayıt yapan sorgu
    if($sor)//Kayıt yapıldımı diye bakıyoruz
    {
    echo "Kayıt işlemi başarıyla gerçekleşti";
    }
    else
    {
    echo "HATA! Kayıt yapılamıyor..";
    }
    }

    Diğeri ise ayarlar
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
    <html xmlns="http://www.w3.org/1999/xhtml"&gt;
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <?php
    $dbhost="localhost";
    $dbuser="";//kullanım adımda root
    $dbpass="";//benim şifrem 123 olduğu için 123 yazıyorym
    $dbadi="";//Burada phpmyadmin kısmından oluşturulan veri tabanının adı olacak
    $baglanti=@mysql_connect($dbhost,$dbuser,$dbpass) or die("Veri tabanı ile bağlantı sağlanamıyor!");
    mysql_select_db($dbadi,$baglanti) or die("Veri tabanına bağlanılamadı!");
    ?>

    Ben fıkra değilde karşıdaki wordpress siteyi komple çekmek istiyorum resimleri ile tüm bilgileri ile birlikde yardımcı olurmusunuz

  16. Reply Talha Oca 3,2012 04:03

    güzel bir paylaşım olmus kardeşim ellerine saglık fakat ben bişey sorucaktım aslında o soruda sorulmus fakat cevap pek net değil gibi geldi bana .. !!
    Soru şu : Çok güzel birmakale ve çalışma olmuş ama benim sorum şu siz resim video vs vs gibi şeyler çekebilirsiniz demişsiniz ama ben örneğin bir haber sitesinden bilgi çekmek isitiyorum ve çekeceğim bilgi diyelimki div ler içinde ama o sayfada 10 larca div var hangi divler arasındaki bilgiyi çekeceğimi nasıl bulabilirim . ? Şimdiden teşekkürler ..

    Benim sorumda sadece örnekli açıklaması … Şimdiden teşekkür ederim ..

    • Reply hsnhsynisler Oca 3,2012 10:06

      Bu konuda bir çalışma yapabilmeniz için REGEX bilgisine sahip olmanız gerekir. Google'de aratın güzel kaynaklar var. Daha sonra istediğiniz örneği yaparsınız.

      • Reply Talha Oca 3,2012 21:46

        Saolasın hocam ama bu senin dediğin bana bir faydası olmadı yaptıgın örneği döngüye soksak cekebilirmiyiz ne kadar embed varsa .. ???

  17. Reply hasan May 4,2012 14:39

    merhabalar;

    Başka bir sitedeki tablo halindeki veriyi nasıl çekeriz yardımcı olurmusunuz.

    Ördek olarak: adı, soyadı, doğum tarihi, doğum yeri, yaşı vb. başlıklrı altında 50 adet isim sıralı olsun bu isimleri nasıl alabiliriz ve sitede nasıl tablo halinde gösterebiliriz. Yardımcı olurmusunuz ?

  18. Reply melih Haz 19,2012 14:22

    Merhalar hocam.Ben html kod ile youtube channel embed yapmaya çalışıyorum web siteme.fakat bir türlü beceremedim.playlist olarak almayı başardım.ama bu durumda playlist dinamik olmuyor.yani youtubedaki channel ıma video yüklediğim zaman sitemdeki playliste gelmiyor.bu konuda yardımcı olabilirmisiniz.? iyi günler.

  19. Reply abdulkadir Tem 27,2012 15:12

    bende bir bot sistemi var ama artık çalışmıyor onu nasıl düzeltebilirim. bana yardımcı olabilir misiniz ? lütfen çok makbule geçer… abdulkadirplt@gmail.com burdan bana ulaşabilirsiniz.

  20. Reply hakan Eki 3,2012 23:06

    Bilmediğimden soruyorum.asp ile kodlanmış bir siteden php bot ile tüm ürünleri ve resimleri vs. çekmek mümkünmüdür?

  21. Reply qpcellat Ara 15,2012 22:49

    ilgilenirsen senden bişey rica edicem

  22. Reply qpcellat Ara 15,2012 22:51

    bu konuda yardımınıza ihtiyacım var msn mi ekleyin facede http://www.facebook.com/qp.cellat.5 burdayım bi konusalım olmazsa ücretli bi işimiz olcak senle 😀

Leave a Reply