Genius'tan Python Kullanarak Şarkı Sözlerini Kazıma Yönergeleri

Yayınlanan: 2019-08-08
İçindekiler gösterisi
Neden Biri Genius'tan Veri Taramak İstiyor?
Python kullanarak Genius'tan Şarkı Sözlerini Web'de Nasıl Kazıyabilirim?
Kod nerede?
Kodun açıklaması
Eylem Kodunun Bir Örneği
Bu Çözüm Ne Kadar Ölçeklenebilir?

Rap Genius nedir ?

İlk olarak 2009 yılında Rap-Genius olarak başlayan şirket, şimdi her ay yüz milyondan fazla kişiye hizmet veren Genius adlı benzersiz bir müzik bilgi paylaşım medya şirketine dönüşmüştür . Bu blogda , adım adım bir kılavuzda Python kullanarak şarkı sözlerini web'den nasıl kazıyacağımızı öğreneceğiz .

Müzikle ilgilenen çoğu internet kullanıcısı Genius'a aşina olmalıdır . Şarkının arkasında ne olduğunu - sanatçının onu yazarken ne düşündüğünü ve çok daha fazlasını paylaşan, hızla büyüyen bir web sitesidir . Ariana Grande ve Kendrick Lamar gibi tanınmış sanatçılar bile dünyaya sanatlarına daha derin bir bakış açısı kazandırmak için Genius ile işbirliği yapıyor.

Eğer biri şarkı sözlerini taramak isterse, amacı ne olursa olsun, gidilecek web sitesi Genius'tur. Yirmi beş milyondan fazla şarkı, albüm, sanatçı ve ek açıklama içeren veri tabanları, onları dünyanın herhangi bir yerindeki en büyük şarkı sözü veri tabanı haline getiriyor .

Neden Biri Genius'tan Veri Taramak İstiyor?

Genius, katkıda bulunanların, müzisyenlerin ve hatta editörlerin şarkıların yapısını bozmak için bir araya geldiği bir müzik topluluğu haline geldi. Bu nedenle dünyanın en büyük müzik sözü kütüphanesi haline geldiler. Genius, kullanıcı tabanını artırmak için müzik akışı şirketleriyle de ortaklık kurdu.

Genius, müzik-şarkı sözlerini ve müzik endüstrisi ile ilgili diğer verileri web'den kazımak ve taramak için kullanılan yerdir. Çünkü size sadece geniş bir şarkı sözü deposu sağlamakla kalmayacak, aynı zamanda kullanıcı yorumlarına, kullanıcı duygularına da erişebileceksiniz. Düşünün, Genius'tan alınan verilere dayanarak şu anda yeni kullanıcılar arasında hangi türün popüler olduğunu tahmin edebilirsiniz!

Python kullanarak Genius'tan Şarkı Sözlerini Web'de Nasıl Kazıyabilirim?

Web'i kazıma söz konusu olduğunda, birkaç dil farklı web kazıma projelerini destekler. Bunların arasında Python öğrenmesi en kolay olanıdır ve aynı zamanda farklı proje türleri için kullanışlıdır. Python ile birlikte, bir metin düzenleyicinin yanı sıra bazı üçüncü taraf Python paketlerine de ihtiyacınız olacak. Hangi web sitesini kazıdığınız önemli değil, kurulum aynı olduğundan bu sayfadaki talimatları takip edebilirsiniz. İşiniz bittiğinde ve sisteminizi kurduktan sonra başlamaya hazırsınız.

Kod nerede?

Bu yüzden şarkı sözleri, Genius ve temel kurulum hakkında çok konuştuk. Nasıl çalıştırılacağını ve kodun nasıl çalıştığını göstermeden önce , python kullanarak şarkı sözlerini kazımak için koda bir göz atalım .

[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
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('Genius şarkı sözleri URL'sini girin-')

# Web sitesini bir mozilla tarayıcısı kullanarak girdiğinize inandırmak
req = İstek(url, başlıklar = { 'Kullanıcı Aracısı': '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')
song_json = {}
song_json[“Şarkı Sözleri”] = [];
song_json[“Yorumlar”] = [];

#Şarkının Adını Çıkart
çorba.findAll('title') içindeki başlık için:
song_json[“Title”] = title.text.strip()

# Şarkının çıkış tarihini çıkarın
çorba.findAll'daki yayılma için('span', attrs = {'class': 'metadata_unit-info metadata_unit-info–text_only'}):
song_json[“Yayın tarihi”] = span.text.strip()

# Şarkıdaki Yorumları Çıkarın
div için çorba.findAll('div', attrs = {'class': 'rich_text_formatting'}):
yorumlar = div.text.strip().split(“n”)
yorumlarda yorum için:
eğer yorum!=””:
song_json[“Yorumlar”].append(yorum);

#Şarkının Sözlerini Çıkart
div için çorba.findAll('div', attrs = {'class': 'lyrics'}):
song_json[“Şarkı Sözleri”].append(div.text.strip().split(“n”));

#Dosya adıyla oluşturulan json'u başlık + .json olarak kaydedin
dosya olarak open(song_json[“Title”] + '.json', 'w') ile:
json.dump(song_json, outfile, girinti = 4, garanti_ascii = Yanlış)

# Html içeriğini başlık + .html olarak bir html dosyasına kaydedin
dosya olarak open(song_json[“Title”] + '.html', 'wb') ile:
dosya.write(html)

print('———-Veri çıkarma tamamlandı. json dosyasını kontrol edin.———-')
[/kod]

Yukarıda verilen kodu çalıştırmak için tek yapmanız gereken kodu .py uzantılı bir dosyaya kaydetmek. Böylece onu örneğin songLyricsExtractor.py adlı bir dosyaya kaydedebilir ve ardından terminalden şu komutu çalıştırabilirsiniz:

[kod dili=”python”]
piton songLyricsExtractor.py
[/kod]

Çalıştırdığınızda, bir URL girmeniz istenecektir. Bu, Genius web sitesindeki herhangi bir şarkının bağlantısı olabilir. Lana Del Rey'in Amerika'yı Arayışı için bu bağlantıyı kullanabilirsiniz . Kodun nasıl çalıştığını size göstermek için Genius'tan bu şarkının sözlerini kazıdık ve bu, daha sonra blogda ele alınacaktır.

Kodun açıklaması

Kodu çalıştırmaya ve size ne verdiğini anlamaya başlamadan önce, kodun kendisini anlamaya çalışalım. Her zaman olduğu gibi, bir HTML sayfası aracılığıyla ayrıştırma yapan bir kitaplık olan BS4'ü (veya Güzel Çorbayı) kullanıyoruz .

En başta, web sayfasını alırız ve onu, belirli niteliklere sahip div'leri, yayılmaları, başlıkları ve diğer etiketleri alabileceğimiz bir Güzel Çorba nesnesine dönüştürürüz. Bu teknikleri şarkı sözlerini, yorumları, web sayfasının başlığını ve şarkının gerçekten yayınlandığı günü taramak için kullanırız. Bu verileri kazıdıktan sonra, sayfa+.json uzantısının ad başlığıyla bir JSON dosyasına kaydederiz. Ayrıca HTML dosyasını sayfa+.html uzantısının ad başlığıyla birlikte kaydederiz. Bu, HTML sayfasının analiz edilebilmesi ve gelecekte daha fazla veri noktasının bulunabilmesi için yapılır.

Eylem Kodunun Bir Örneği

Kodu çalıştırıp Genius'ta bir şarkının bağlantısını verdiğinizde, aşağıda verilene benzer bir JSON alacaksınız. Aşağıdaki, Lana Del Rey'in Amerika'yı Aramak için aldığımız JSON'dur. Boyutları çok büyük olduğu için yalnızca bir JSON sunduk, ancak onu en sevdiğiniz şarkılara karşı da çalıştırabilirsiniz.

[kod dili=”python”]
{
"Şarkı sözleri": [
[
"[Ayet 1]",
“San Francisco'ya bir gezi yaptım”,
“Bütün arkadaşlarımız eğleneceğimizi söyledi”,
“İşe yaramadı, ben de Fresno'ya gittim”,
“Oldukça manzaralı bir sürüş oldu”,
“Parkta çocukları izlemek için kenara çekildi”,
“Onlar için ancak hava karardıktan sonra endişelenirdik”,
“”,
"[Koro]",
“Hala kendi Amerika versiyonumu arıyorum”,
“Silahsız, bayrağın serbestçe dalgalanabileceği bir yer”,
"Gökyüzünde bomba yok, sadece sen ve ben çarpıştığımızda havai fişekler patlıyor",
"Sadece aklımda olan bir rüya",
"Sadece aklımda olan bir rüya",
"Sadece aklımda olan bir rüya",
“”,
“[Verse 2]”,
“New York'a geri uçtum”,
“Hudson Nehri hattını kaçırdım”,
"Placid Gölü'ne giden bir trene bindim",
“Orası başka bir yer ve zaman, nerede”,
“Arabalara gider ve blues dinlerdim”,
“Yapmadan önce iki kez düşündüğüm o kadar çok şey var ki, hayır”,
“”,
"[Koro]",
“Hala kendi Amerika versiyonumu arıyorum”,
“Silahsız, bayrağın serbestçe dalgalanabileceği bir yer”,
"Gökyüzünde bomba yok, sadece sen ve ben çarpıştığımızda havai fişekler patlıyor",
"Sadece aklımda olan bir rüya",
"Sadece aklımda olan bir rüya",
"Sadece aklımda olan bir rüya",
"Aklımda olan bir rüyaydı"
]
],
"Yorumlar": [
[
""Looking for America", Lana'nın 5 Ağustos 2019'da Los Angeles'a döndükten sonra ABD'deki toplu katliamlarla ilgili yazdığı bir şarkıdır. daha önce “Coachella – Woodstock in My Mind” ve “When The World Was at War We Kept Dancing” gibi parçalarda şarkı söyledi. Del Rey, şarkıyı 9 Ağustos 2019'da akış platformları aracılığıyla single olarak yayınladı.”,
"Şarkının adı Simon & Garfunkel'in "Amerika"sına bir gönderme olabilir:",
"Hepsi Amerika'yı aramaya geldiler",
"Del Rey, stüdyoda arkadaşı ve yapımcı Jack Antonoff ile şarkı söylediği bir videoyu paylaşmak için Instagram'ını aldı."
],
[
"Del Rey, şarkıyı Instagram'da ekleyerek paylaştı:",
“Merhaba millet, bu sabah kardeşimle birlikte Montecito'dan erken döndüler ve Jack Antonoff'tan şehre gelmesini istediler çünkü aklımda yazmak istediğim bir şarkı vardı. Artık bir politikacı olmadığımı biliyorum ve bir fikrim olduğu için kusura bakmayın ama son birkaç gün içinde beni gerçekten etkileyen tüm toplu katliamlar ve arka arkaya silahlı saldırılar ışığında Hücresel düzeyde, mühendisimiz Laura'nın 20 dakika önce çektiği bu videoyu paylaşmak istedim. Umarım beğenmişsindir. Bu sabah kaydettiğim korolara aşk söylüyorum. Ben buna 'Amerika'yı Arıyorum' diyeceğim."
]
],
“Title”: “Lana Del Rey – Looking For America Şarkı Sözleri | Dahi Şarkı Sözleri”,
“Yayın tarihi”: “9 Ağustos 2019”
}
[/kod]

Bu Çözüm Ne Kadar Ölçeklenebilir?

Sunduğumuz çözüm tek bir şarkı için olsa da, Genius'ta şarkı sözleri sayfalarının bağlantılarının bir listesini oluşturabilir ve ardından Python kullanarak web kazıma şarkı sözleri için tekrarlı olarak listedeki kodu çalıştırabilirsiniz . Ayrıca şarkı sözleri içeren Genius sayfaları için bir normal ifade eşleşmesi bulabilir ve ardından tek seferde Genius'tan birden çok sayfayı tarayabilirsiniz, böylece kodunuz şarkı sözleri içeren sayfaları tanır.

Bununla birlikte, bu tür kendin yap çözümleri, amatör hobiler veya bir kerelik ihtiyacı olan biri için iyidir. Gereksiniminizin daha ticari olması ve aşağıdaki gibi özelliklere ihtiyaç duyduğunuz bir web kazıma sorununuz varsa:

  1. Belirli formatlarda veri teslimi
  2. Düzenli sıklıkta veri yenileme
  3. Bakım ve altyapı maliyeti yok

O zaman PromptCloud gibi bir web kazıma servis sağlayıcısıyla gitmelisiniz. PromptCloud'daki ekibimiz, dünya çapındaki iş ekiplerine verileri iş akışlarında kullanmalarını ve veriye dayalı kararlar vermelerini sağlamak için kurumsal düzeyde web kazıma çözümleri sunmaktan gurur duyar.