Python İle Youtube Videolarının Bilgilerini Alma
Web scraping Türkçe ifade edecek olursak web kazıma, otomatik olarak internetten bilgi almanın bir yoludur. Hepimizin bildiği gibi YouTube, video görüntüleme sayıları, video yorumları, video beğenme sayıları vb. gibi tonlarca videoya sahip büyük bir veri kaynağıdır.
Bu yazımız da, YouTube aramalarından video bilgilerini ayıklamak için python’da web scraping yöntemini nasıl kullanılacağını öğreneceğiz. Video bilgilerinde, arama sonuçlarında görüntülenen görüntüleme sayısını ve video başlığını çıkaracağız.
Bir önceki yazımızda Python ile Youtube videolarını bilgisayara indirme yöntemini paylaşmıştık.
Buna başlamak için önce iki önemli kütüphane kurmamız gerekiyor. Birincisi, bir YouTube arama sonucundan yanıt almak için “reguest” , diğeri ise yanıtı html içeriğine ayrıştırmak için “Beatiful Soup” isimli kütüphanelerdir.
Bu iki kütüphaneyi sisteminiz yüklemek için alttaki komut satırlarını kullanabilirsiniz.
pip install requests pip install -U bs4
Şimdi gerekli kütüphaneleri kurduk, başlayalım.
İlk adım olarak Kütüphaneleri içe aktarıyoruz.
YouTube’da her arama yaptığınızda, temel bir arama URL’si oluşturur ve ardından sorguyu tamamlamak için arama URL’nizi bu URL’ye ekler. YouTube’da “öğretmen” aradığımızı varsayalım. Temel arama URL’si ve sorgu aşağıdaki gibi tanımlanabilir.
base_url = 'https://www.youtube.com/results?search_query=' search_string = 'jn7net' URL = base_url + search_string
Şimdi, “istek” kitaplığını kullanarak bu URL’deki verileri kazıyacağız.
Verileri kopyaladıktan sonra, güzel çorba kullanarak HTML’ye ayrıştıracağız ve arama sonucuyla sonuçlanan tüm video bilgilerini bulacağız. Belirli bilgileri çıkarmak için HTML verilerinden belirli bir sınıf kullanacağız.
Yukarıda kullanılan soup.findall () işlevi gerekli verileri verecektir, ancak kolayca anlaşılabilir hale getirmek için basit bir python betiği çalıştırmamız gerekir.
kodumuzun tamamı alttaki gibidir.
from bs4 import BeautifulSoup as bs import requests base_url = 'https://www.youtube.com/results?search_query=' search_string = 'jn7net' URL = base_url + search_string response = requests.get(URL) page = response.text soup = bs(page, 'html.parser') vids = soup.findAll('a',attrs={'class':'yt-uix-tile-link'}) for v in vids: print(v['title']) v = str(v) views = '' try: indx = v.index('views') indx = indx - 2 while v[indx] is not ' ': views = views + v[indx] indx = indx -1 print(views[::-1]) except: continue
Çıktı olarak bize alttaki gibi “JN7NET” youtube kanalındaki tüm videoların listesini döndürüyor.
Python ve OpenCv kullanarak Youtube videolarını stream yapma konumuz, Python derslerimiz veya OpenCV ile hazırladığımız örneklerimiz ilginizi çekebilir.
Yorumlarınız bekliyoruz.