Python Kullanarak Youtube Verilerini Kazıma
Yayınlanan: 2019-05-29Video paylaşım siteleri söz konusu olduğunda YouTube açık ara kazanan olarak ortaya çıktı ve 160 milyar doların üzerinde bir değere sahip olduğu söylenirken , web sitesi aracılığıyla geçimini sağlayan insan sayısı da çok büyük. Bu içerik oluşturucular, YouTube ortaklık programına katılır ve içeriklerinden para kazanarak reklamlar aracılığıyla tonlarca para kazanır.
Neden Youtube'dan veri kazınsın?
YouTube verileri, aşağıdakiler gibi çok çeşitli kullanım durumları için yararlı olabilir:
1. En çok beğenilen anahtar kelimeleri bulun
Belirli kelimeler için YouTube'da görüntülenen en iyi videoları bulmak için bir arama yaptığınızı varsayalım. Şimdi, bu videoların her birinin beğenilerini, beğenmediklerini, görüntülenmelerini ve başlıklarını sıyırırsanız, YouTube başlıklarınıza eklendiğinde daha iyi gelir sağlayabilecek bir anahtar kelime listesi yapabilirsiniz.
2. Hashtag'leri Karşılaştırın
Belirli hashtag'lere sahip videoların beğenilerini ve görüntülemelerini karşılaştırarak, videonuzu daha popüler hale getirmek için hangi hashtag'leri kullanacağınız konusunda daha iyi bir fikir edinebilir veya video başlığınızla hangi hashtag'lerin daha iyi gittiğini anlayabilirsiniz.
3. En popüler kanalları bulun
YouTube'daki en iyi videoları çıkarmak, meydana gelen kanal adlarının frekans grafiğini oluşturmanıza yardımcı olabilir ve böylece insanların en çok keyif aldığı kanalları bulmanızı sağlar. Bu da, YouTube izleyicileri arasında en popüler konuların hangileri olduğunu anlamanıza yardımcı olur.
4. Kanalların popülerliğini takip etmek
Belirli bir YouTube kanalının yeni yüklenen videolarının verilerini çıkararak, bir kanalın popülaritesinin artmakta veya azalmakta olup olmadığını veya durgun olup olmadığını öğrenebilirsiniz.
5. Beğenilenleri, beğenmediklerini ve video görüntülerini kaydetme
Bu videolardan düzenli zaman aralıklarında veri sıyırarak, x ekseninde zaman ve y ekseninde beğeniler, beğenmemeler veya görüntülemeler içeren bir grafik oluşturabilirsiniz.
Kodla başlayalım:
Kurulum ve başlatma sürecini, bunun gibi önceki “Verileri nasıl kazınır” makalelerinde zaten açıkladığımızdan, bu adımları tamamladığınızı umuyoruz.
Kodu çalıştırmak için python komutunu kullanın ve ardından istendiğinde bir YouTube video URL'si girin.

Aşağıda verilen kodu bir dosyaya kopyalayın ve youtubeDataExtractor.py olarak adlandırın (aslında ona herhangi bir dosya adı verebilirsiniz, ancak '.py' ile bittiği sürece).
[kod dili=”python”]
#!/usr/bin/python
# -*- kodlama: utf-8 -*-
urllib.request'i içe aktar
urllib.parse'ı içe aktar
urllib.error'ı içe aktar
bs4'ten BeautifulSoup'u içe aktarın
ssl'yi içe aktar
json'u içe aktar
ithalat ast
json'u içe aktar
işletim sistemini içe aktar
urllib.request'ten içe aktarma İsteği, urlopen
# SSL sertifika hatalarını yok saymak için
ctx = ssl.create_default_context()
ctx.check_hostname = Yanlış
ctx.verify_mode = ssl.CERT_NONE
# Kullanıcıdan giriş
url = input('Youtube Video URL'sini Girin-')
# Web sitesini bir mozilla tarayıcısı kullanarak girdiğinize inandırmak
req = İstek(url, başlıklar={'User-Agent': 'Mozilla/5.0'})
web sayfası = urlopen(req).read()
# Verilerin kolayca çıkarılması için html sayfasının bir BeautifulSoup nesnesi oluşturma.
çorba = BeautifulSoup(web sayfası, 'html.parser')
html = çorba.prettify('utf-8')
video_details = {}
other_details = {}
çorba.findAll('span',attrs={'class': 'watch-title'} içindeki yayılma için):
video_details['TITLE'] = span.text.strip()
çorba.findAll('script',attrs={'type': 'application/ld+json'} içindeki komut dosyası için):
channelDesctiption = json.loads(script.text.strip())
video_details['CHANNEL_NAME'] = channelDesctiption['itemListElement'][0]['item']['name']
çorba içinde div için.findAll('div',attrs={'class': 'izleme-görüntüleme sayımı'}):
video_details['NUMBER_OF_VIEWS'] = div.text.strip()
çorba.findAll'daki düğme için('button',attrs={'title': 'Bunu beğendim'}):
video_details['LIKES'] = button.text.strip()
çorba.findAll'daki düğme için('button',attrs={'title': 'Bunu beğenmedim'}):
video_details['DISLIKES'] = button.text.strip()
çorba.findAll'daki yayılma için('span',attrs={'class': 'yt-subscription-button-subscriber-count-branded-horizontal yt-subscriber-count'}):
video_details['NUMBER_OF_SUBSCRIPTIONS'] = span.text.strip()
hashtag'ler = []
çorba.findAll('span',attrs={'class': 'standalone-collection-badge-renderer-text'} içindeki yayılma için):
a in span.findAll('a',attrs={'class': 'yt-uix-sessionlink'}):
hashtags.append(a.text.strip())
video_details['HASH_TAGS'] = hashtag'ler

dosya olarak open('output_file.html', 'wb') ile:
dosya.write(html)
open('data.json', 'w', encoding='utf8') dış dosya olarak:
json.dump(video_details, outfile, sure_ascii=Yanlış, indent=4)
print ('———-Verilerin çıkarılması tamamlandı. json dosyasını kontrol edin.———-')
[/kod]
Kodu çalıştırdıktan sonra, mevcut dizininizde data.json adında oluşturulmuş bir JSON bulacaksınız. Bazı popüler müzik videolarının kodunu çalıştırdık ve işte bunlarla ilişkili JSON'lar:
1. Imagine Dragons'tan Thunder –
[kod dili=”python”]
{
“BAŞLIK”: “Ejderhaları Hayal Edin – Gök Gürültüsü”,
“CHANNEL_NAME”: “ImagineDragonsVEVO”,
"NUMBER_OF_VIEWS": "1.182.556.781 görüntüleme",
“BEĞENİLER”: “6,693,559”,
“SEVMEYENLER”: “337.823”,
"NUMBER_OF_SUBSCRIPTIONS": "17M",
"HASH_TAGS": []
}
[/kod]
2. Duygularında Drake tarafından
[kod dili=”python”]
{
“TITLE”: “Drake – In My Feelings (Söz, Ses) “Kiki Beni seviyor musun””,
“KANAL_NAME”: “Özel Birlik”,
"NUMBER_OF_VIEWS": "278.121.686 görüntüleme",
“BEĞENİLER”: “2,407,688”,
“Beğenmeyenler”: “114.933”,
"NUMBER_OF_SUBSCRIPTIONS": "614K",
"HASH_TAGS": [
“#InMyFeelings”,
“#Drake”,
"#Akrep"
]
}
[/kod]
YouTube tarayıcı kodu açıkladı:
Her zamanki gibi, önce HTML kodunu web sayfasından sıyırır ve yerel dizinimizde bir dosyaya kaydederiz, böylece onu analiz edebilir ve kolayca çıkarılabilecek ve aynı zamanda değerli olabilecek veri noktalarını bulabiliriz. HTML sayfasındaki veri noktaları için yapılan çalışmaların çoğu, belirli anahtar kelimeler veya değerler aranarak ve bunların nerede ortaya çıktıklarını bularak manuel olarak yapılmalıdır.
HTML kodunda belirli yerlerden veri çıkarmak için BeautifulSoup'u (BS4) kullandık.
- 'İzleme başlığı' sınıfına sahip yayılma türü öğesi, videonun Başlığını bulabileceğiniz yerdir.
- 'application/ld+json' türünde olan komut dosyası öğesi kanal adını içerir.
- Sınıf izleme görüntüleme sayısına sahip div öğesi, söz konusu YouTube videosunun görüntülenme sayısını elde etmenize yardımcı olur.
- 'Bunu beğendim' başlıklı düğme öğesi, söz konusu videodaki beğeni sayısını içerir.
- Yukarıdaki noktaya benzer şekilde, 'Bunu beğenmedim' başlıklı düğme öğesi, belirli bir videodaki beğenmeme sayısını içerir.
- 'yt-subscription-button-subscriber-count-branded-horizontal yt-subscriber-count' sınıfına sahip yayılma öğesi, söz konusu videoyu yükleyen kanala abone sayısını çıkarabileceğiniz bir öğedir.
- Belirli bir videoyla ilişkili hashtag'leri bulmak, diğer veri noktalarından biraz daha karmaşıktır. İlk olarak, 'standalone-collection-badge-renderer-text' sınıfıyla tüm yayılmaları çıkarmanız ve oradan da sınıf- 'yt-uix-sessionlink' ile tüm a-etiketlerini çıkarmanız gerekir. Tüm a etiketlerindeki metni bir diziye çıkararak, bir hashtag listesi oluşturabileceksiniz. Bu dizi, nihai sonuç jsonunda bilgiyi yapılandırılmış bir biçimde almak için 'HASH_TAGS' adı verilen özel bir anahtar altında json sonucuna eklenebilir.
Youtube'dan hangi veri noktalarını sıyırabilirsiniz?
Yukarıda verilen kodu kullanarak, URL'lerine sahip olduğunuz sürece herhangi bir YouTube videosundan belirli veri noktalarını sıyırabilirsiniz. YouTube video sayfalarında zorunlu bir alan olmadığı için bazı videolarda sadece hashtag alanı bulunmayabilir. Kazınabilecek veri noktaları aşağıdaki gibidir:
BAŞLIK
En önemli veri noktası, en başta çıkardığımız noktadır. Videonun başlığı çok fazla bilgi içeriyor ve diğer tüm veri noktalarının hiçbir anlamı olmayacağı için son derece önemlidir.
KANAL İSMİ
Başlıktan hemen sonra, başlığı oluşturan kişiyle, yani içeriği oluşturan kişiyle ilişkilendirmek için Kanal adı önemlidir. YouTube'da videolar, çoğu durumda tek bir kanalın videolarında birden fazla kişi çalıştığından, içerik oluşturucuları tarafından değil Kanal adlarıyla ilişkilendirilir.
GÖRÜŞ SAYISI
Bir videonun erişimini anlamanın en basit metriği, aldığı görüntüleme sayısını bulmaktır. Bu aynı zamanda bir YouTube videosuyla ilişkilendirilen en önemli metriktir ve birçok yönden videonun oluşturucusunun ne kadar gelir elde edeceğini belirler.
SEVİYOR
Bir YouTube videosundaki beğeniler, basitçe, izleyicilerin bir videonun altındaki beğen düğmesini tıklamaya yetecek kadar videoyu beğenen yüzdesidir.
SEVMİYOR
Yukarıdaki veri noktasına benzer şekilde, beğenmeme sayısı, bir videonun beğenmeme düğmesinin tıklanma sayısını belirler.
ABONELİK SAYISI
Beğeniler, beğenmemeler ve görüntülemeler tek bir YouTube videosunun popülaritesinin resmini çizerken, abonelik sayısı YouTube kanalının ne kadar popüler olduğu hakkında daha iyi bir fikir verir. YouTube kanalları için başka bir metriğimiz yok. Abonelik sayısı tek veri noktasıdır ve ne kadar yüksek olursa, söz konusu YouTube kanalı o kadar popüler olur.
HASHTAG'LER
Hashtag'ler, içeriğinizi farklı ortamlarda aranabilir hale getirmenin popüler bir yolu haline geldi. Facebook gönderileri veya Instagram resimleri olsun, insanlar bugün farklı içerik türlerinin birbiriyle ilişkilendirilebilmesi için farklı çevrimiçi içerik türlerine sahip hashtag'ler kullanıyor. 'Trend hashtag'lerin bugün bir şey olmasının nedeni budur.
Çözüm
Verilen kod, bir YouTube video sayfasından yalnızca belirli veri noktalarını çıkarabilirken, farklı YouTube sayfalarından HTML sayfalarını keşfetmek, benzer HTML öğeleri altında oluşan daha fazla veri noktası bulmanıza yardımcı olabilir. Web sitelerinin kendileri değişmeye devam ettiğinden, web kazımanın kesin ve hızlı kuralları yoktur. Bu nedenle, hangi verilerin kazınacağını ve nasıl kazınacağını öğrenmek, yalnızca farklı veri biçimlerine sahip farklı web sayfalarını kazıyarak deneyimlerden elde edilebilecek bir şeydir.
Web verilerini çıkarma konusunda yardıma mı ihtiyacınız var?
Web kazıma hizmetlerimiz aracılığıyla iş uygulamaları için web sitelerinden temiz ve kullanıma hazır veriler alın.
Hata! Formunuzu bulamadık.
Sorumluluk Reddi: Bu eğitimde sağlanan kod yalnızca öğrenme amaçlıdır. Nasıl kullanıldığından sorumlu değiliz ve kaynak kodunun herhangi bir zararlı kullanımı için hiçbir sorumluluk kabul etmiyoruz.
