Sitemizde görmüş olduğunuz phpsorunu.com-2011 Wordpress Teması sadece ve sadece 25 TL'dir. Ayrıntılı bilgi için tıklayınız.

İçerik

Buradasınız: Anasayfa » PHP » PHP Bot (Sitegezer) İle Başka Sitelerden Veri Çekmek

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.

$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.

Paylaş :

Yazar Hakkında

Hasan Huseyin İŞLER

Lise yıllarında programlama ile tanışan ve Q-Basic, Pascal, C başlangıç seviyesinde öğrenenir. Üniversite de TEF-BSÖ okurken diğer dillerin yanı sıra PHP'de kendini geliştirmeye devam ederek bunların yanında CSS, JS ve Wordpress sistemiyle ilgilenir. www.phpsorunu.com'un da yöneticisi ve yazarlarındandır.

Yapılan Yorumlar

Bu konuya 23 yorum yapılmış.
  1.   Ramazan03 Eylül 2010, 17: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.   Ramazan03 Eylül 2010, 17:44  
     

    Dosyaları Cekmem Mumkunmu Yani Bir Takıma?

     
         
  3.   Hasan Huseyin İŞLE03 Eylül 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.   sohbet16 Kasım 2010, 9: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.   Samet04 Aralık 2010, 3: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.   cet rulet30 Ocak 2011, 6: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.   Hasan Huseyin İŞLE30 Ocak 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.   berk30 Mart 2011, 21:29  
     

    merhaba

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

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

     
         
  9.   Hasan Huseyin İŞLE30 Mart 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.   berk31 Mart 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.   susak17 Haziran 2011, 17: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 :(

     
         
  12.   hsnhsynisler17 Haziran 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.

     
         
  13.   susak18 Haziran 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.

     
         
  14.   fsdf02 Eylül 2011, 16: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.

     
         
  15.   hsnhsynisler03 Eylül 2011, 12:43  
     

    Yapılabilir.

     
         
  16.   Murat09 Ekim 2011, 21: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

     
         
  17.   Oğuzhan Aslan14 Kasım 2011, 2:24  
     

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

     
         
  18.   deniz özmen06 Aralık 2011, 2: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

     
         
  19.   hsnhsynisler06 Aralık 2011, 9:57  
     

    Hocam aslında işinize yarabilecek tüm kodlar yukarıda var. Ayrıca diğer bir yazı da da http://www.phpsorunu.com/php-ile-bot-yapimi-dom-t… ayrıntılı şekilde WordPress siteden çekim de anlatıldı.

     
         
  20.   Talha03 Ocak 2012, 5: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 ..

     
         
  21.   hsnhsynisler03 Ocak 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.

     
         
  22.   Talha03 Ocak 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 .. ???

     
         
  23.   hsnhsynisler04 Ocak 2012, 17:26  
     

    Dene hocam, bu işler bol bol örnek yaparak öğrenilir.

     
         

Yorum Gönder

İsim(Gerekli)
E-Posta(Gerekli)
Web Siteniz(Tercihen)

Mesaj Bölümü

Arama Bölümü

PhpSorunu.Com Widget

Yazılardan Haberdar Olun

Kategoriler

Badigardımız

DMCA.com © Tüm Hakları Saklıdır.
Bu websitesi DMCA Protection ile lisanslanmıştır. Yazılar kaynak belirtilmeden kullanılamaz.
yok herhangi bir şey canın sag olsun
67 kişi takipte! Sen de takip et.