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.

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

KategorilerPhp

“PHP Bot (Sitegezer) İle Başka Sitelerden Veri Çekmek” için 32 cevap

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

  3. Ç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.

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

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

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

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

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

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

  8. ç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.

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

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

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

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

      1. 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 .. ???

  12. 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 ?

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

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

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir