Bu yazıda youtube bot scriptini yazarken php bot yapımı ayrıntılı anlatım konusunda da bahsettiğimiz kütüphanelerden birini kullanacağız. Php bot yapımı konusuna gitmek için buraya tıklayabilirsiniz. Diğer konuda, kullanacağımız kütüphane olan “PHP Simple HTML DOM Parser” kütüphanesinin linkini vermiştim oradan indirip hemen projenize dahil edebilirsiniz.

Kaynak kodunu elde etmek

İlk olarak php botumuz youtube linkimizin kaynak kodunu almasını sağlamalıyız. Belirli bir urlden direkt olarak kaynak kodları çekeceğimiz için kütüphanenin bize sunduğu file_get_html() fonksiyonunu kullanabiliriz.

İkinci bir yöntem ile de aynı işlemi yapabiliriz.

Elimizde hali hazırda bir html kodu varsa kütüphanemizin sunduğu str_get_html() fonksiyonu ile de yukarıdaki işlemi aynen yapabiliriz. Bu şekilde $html değişkenimize kaynak kodunu aktardık. Şimdi kütüphanenin bize sunduğu fonksiyonlar ile istediğimiz verilere uğraşmaya geldi.

Verileri parçalamak

Bize gerekli olan kısımlar video başlığı, video açıklaması, görüntülenme sayısı,  video iframe kodu ve video kapak resmi bizim için yeterli olacaktır.

Video başlığını çekelim. Kaynak kodlarından video başlığının olduğu yere bakıp kodumuzu oluşturalım.

find fonksiyonu ile “watch-title” class sahibi ilk span etiketinin ( ikinci parametrenin sıfır olması ilk eşleşmeyi temsil ediyor ) içerisindeki yazıyı çekmesini söyledik. Şimdi sırasıyla diğer bilgileride çekelim

Böylece bilgileri kolayca çekmiş olduk ve youtube bot scriptimizi bitirdik. Php nin parser_url() ve parse_str() fonksiyonları ile url deki video idsini aldırdık. Bu id ilede iframe kodu ve thumbnail resmini oluşturduk.  Artık istediğimiz yerde bu bilgileri kullanabiliriz. Php ile bot yapımı konusunda öğrenmek istediğiniz veya sormak istediğiniz herhangi bir konuyu iletişim sayfasından yada yazı altına yorum yaparak bana iletebilirsiniz. Sizlere elimden geldiğince yardımcı olmaya çalışırım.

PHP Simple HTML DOM Parser

Kütüphaneye ulaşabileceğiniz adres: Tıklayın

Kütüphane için isteye bağlı olarak daha ayrıntılı bir anlatım yapabiliriz. Bu konuda farklı botlar veya daha değişik uygulamalar geliştirebiliriz.

Youtube bot scripti

Php Youtube Bot Örneği
Php Youtube Bot Örneği

Yazar Hakkında

Yorumlar

    1. Kemal BAL Yazar

      Burada belirli bir video sayfasından bilgiler çekildi. Eğer bir arama yaptırıp sonrasında videoları teker teker bu işleme tabi tutarsanız istediğiniz sonucu ulaşacağınızı düşünüyorum.

      1. burak

        sizin dediğiniz gibi yaparsak teker teker sayfaları çekersek bu seferde sayfa geç yükleniyor ?

        ek olarak bu simple_html_dom.php kütüphanesi dosyası olmadan yapmak istesek ?

        çünkü bazı web hostinglerde simple_html_dom.php dosyası çalışmıyor ?

        1. Kemal BAL Yazar

          Farklı sayfalardan veri çekmek istiyorsanız bunu yapmak zorundasınız ne yazık ki. Gecikmeyi engellemek için bir javascript arayüz oluşturulabilir veriler listelenirken arka planda diğer sayfalardan veriler çekilebilir.
          Bahsettiğiniz kütüphaneyi kullanmak zorunda değilsiniz elbette buradaki yazıya bakmanız faydalı olacaktır.

  1. burak

    peki istediğim bir sayfadan linkleri çekiyorum aynı linkleri sonuç olarak 3 4 2 tane ise sadece 1 tanesini almak istesem ne yapmam gerekir explode ile denedim beceremedim ?

    1. Kemal BAL Yazar

      Explode fonksiyonu ile elbette yapabilirsin ama preg_match ve preg_match_all fonksiyonlarını kullanarak bu işlemler daha rahat yapılabilmekte. Araştırmanda anahtar kelimelerin düzenli ifadeler (regex) veya xpath olsun.

  2. burak

    find fonksiyonu ile “watch-title” almayı öğrendik fakat başka değeri almak istediğimizde ilgili sayfanın kodlarında html değerini göremiyorum örneğin zaman değerini duration vs almak istesem bilgiyi nereden öğrenebilirim?

    1. Kemal BAL Yazar

      Kaynak kodlarından bakıp nerede depolandığını bulursan kolay bir şekilde alabilirsin verileri. Örneğin video uzunluğunu kaynak kodlarında arayabilir nerelerde depolanıyor araştırabilirsin. İlk etapta bulamıyorsan nereden geldiğine bakıp başka senaryolar geliştirmen gerekebilir.

Bir cevap yazın

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