Panduan Menggores Lirik Lagu menggunakan Python dari Genius

Diterbitkan: 2019-08-08
Daftar Isi menunjukkan
Mengapa Seseorang ingin Merangkak Data dari Genius?
Bagaimana Cara Web Mengikis Lirik Lagu dari Genius menggunakan Python?
Dimana Kodenya?
Penjelasan kode
Contoh Kode dalam Tindakan
Seberapa Skalabel Solusi Ini?

Apa itu Rap Genius?

Apa yang awalnya dimulai sebagai Rap-Genius pada tahun 2009 kini telah berkembang menjadi perusahaan media berbagi pengetahuan musik yang unik bernama Genius , yang melayani lebih dari seratus juta orang setiap bulannya . Di blog ini, kita akan belajar cara membuat web scrape lirik lagu menggunakan Python, dalam panduan langkah demi langkah.

Sebagian besar pengguna internet yang menggemari musik pasti sudah tidak asing lagi dengan Genius. Ini adalah situs web yang berkembang pesat yang membagikan apa yang ada di balik lagu tersebut apa yang dipikirkan artis ketika dia menulisnya, dan banyak lagi . Bahkan seniman terkenal seperti Ariana Grande dan Kendrick Lamar berkolaborasi dengan Genius, untuk memberi dunia wawasan yang lebih dalam tentang seni mereka.

Jika ada yang ingin menelusuri lirik lagu, apa pun tujuannya, Genius adalah situs yang harus dikunjungi. Basis data mereka yang berisi lebih dari dua puluh lima juta lagu, album, artis, serta anotasi menjadikan mereka basis data lirik lagu terbesar, di mana pun di dunia .

Mengapa Seseorang ingin Merangkak Data dari Genius?

Genius telah berkembang menjadi komunitas musik, di mana kontributor, musisi, dan bahkan editor berkumpul untuk mendekonstruksi lagu. Karena alasan ini, mereka telah menjadi perpustakaan lirik musik terbesar di dunia. Genius juga telah bermitra dengan perusahaan streaming musik untuk meningkatkan basis pengguna mereka.

Genius adalah tempat untuk web scrape dan crawl lirik musik dan data terkait industri musik lainnya darinya. Karena tidak hanya akan memberi Anda gudang lirik yang luas tetapi Anda juga akan memiliki akses ke komentar pengguna, sentimen pengguna. Bayangkan, Anda bisa memprediksi genre apa yang sedang hits di kalangan pengguna baru berdasarkan data yang diambil dari Genius!.

Bagaimana Cara Web Mengikis Lirik Lagu dari Genius menggunakan Python?

Ketika datang untuk mengikis web, beberapa bahasa mendukung berbagai jenis proyek pengikisan web. Di antara semuanya, Python adalah yang paling mudah dipelajari dan juga berguna untuk berbagai jenis proyek. Seiring dengan Python, Anda juga memerlukan beberapa paket Python pihak ketiga serta editor teks. Anda dapat mengikuti instruksi di halaman ini karena pengaturannya sama, tidak peduli situs web mana yang Anda gesek. Setelah Anda selesai dan Anda telah mengatur sistem Anda, Anda siap untuk memulai.

Dimana Kodenya?

Jadi kita sudah banyak membahas tentang lirik lagu, Genius, dan setup dasar. Mari kita lihat sekilas kode untuk menggores lirik lagu menggunakan python sebelum saya tunjukkan cara menjalankannya dan cara kerja kodenya.

[bahasa kode="python"]
#!/usr/bin/python
#- * -coding: utf – 8 – * –

impor urllib.request
impor urllib.parse
impor urllib.error
dari bs4 impor BeautifulSoup
impor ssl
impor json
impor ast
impor os
dari urllib.request Permintaan impor, urlopen

# Untuk mengabaikan kesalahan sertifikat SSL

ctx = ssl.create_default_context()
ctx.check_hostname = Salah
ctx.verify_mode = ssl.CERT_NONE

# Masukan dari pengguna
url = input('Masukkan lirik lagu Genius Url-')

# Membuat situs web percaya bahwa Anda mengaksesnya menggunakan browser mozilla
req = Permintaan(url, header = { 'User-Agent' : 'Mozilla/5.0' })
halaman web = urlopen(req).read()

# Membuat objek BeautifulSoup dari halaman html untuk memudahkan ekstraksi data.

sup = BeautifulSoup(halaman web, 'html.parser')
html = sup.prettify('utf-8')
lagu_json = {}
song_json[“Lirik”] = [];
song_json[“Komentar”] = [];

#Ekstrak Judul Lagu
untuk judul di soup.findAll('title'):
song_json[“Judul”] = title.text.strip()

# Ekstrak tanggal rilis lagu
untuk span di soup.findAll('span', attrs = {'class': 'metadata_unit-info metadata_unit-info–text_only'}):
song_json[“Tanggal rilis”] = span.text.strip()

# Ekstrak Komentar pada lagu
untuk div di soup.findAll('div', attrs = {'class': 'rich_text_formatting'}):
komentar = div.text.strip().split(“n”)
untuk komentar di komentar:
jika komentar!=””:
song_json[“Komentar”].append(komentar);

#Ekstrak Lirik lagunya
untuk div di soup.findAll('div', attrs = {'class': 'lyrics'}):
song_json[“Lirik”].append(div.text.strip().split(“n”));

#Simpan json yang dibuat dengan nama file sebagai judul + .json
dengan open(song_json[“Title”] + '.json', 'w') sebagai outfile:
json.dump(song_json, outfile, indent = 4, sure_ascii = False)

# Simpan konten html ke dalam file html dengan nama sebagai judul + .html
dengan open(song_json[“Judul”] + '.html', 'wb') sebagai file:
file.tulis(html)

print('———- Ekstraksi data selesai. Periksa file json.———-')
[/kode]

Untuk menjalankan kode yang diberikan di atas, yang perlu Anda lakukan adalah menyimpannya dalam file dengan ekstensi .py. Jadi Anda bisa menyimpannya ke file dengan nama songLyricsExtractor.py misalnya, dan kemudian dari terminal jalankan perintah:

[bahasa kode="python"]
python songLyricsExtractor.py
[/kode]

Saat Anda menjalankannya, Anda akan diminta untuk memasukkan URL. Ini dapat berupa tautan ke lagu apa pun di situs web Genius. Anda dapat menggunakan tautan ini untuk Lana Del Rey's Looking for America. Kami telah menggores lirik lagu ini dari Genius, untuk menunjukkan kepada Anda bagaimana kode tersebut bekerja, dan itu akan dibahas nanti di blog.

Penjelasan kode

Sebelum kita menjalankan kode dan memahami apa yang diberikannya kepada Anda, mari kita coba memahami kode itu sendiri. Seperti biasa, kami menggunakan BS4 (atau Beautiful Soup), perpustakaan yang membuat parsing melalui n halaman HTML.

Pada awalnya, kita mendapatkan halaman web dan mengubahnya menjadi objek Beautiful Soup dari mana kita dapat mengambil div, span, judul, dan tag lainnya, dengan atribut tertentu. Kami menggunakan teknik ini untuk merayapi lirik, komentar, judul halaman web, serta tanggal rilis lagu tersebut. Setelah kami mengikis data ini, kami menyimpannya dalam file JSON, dengan nama-judul ekstensi halaman+.json. Kami juga menyimpan file HTML dengan nama judul ekstensi halaman+.html. Hal ini dilakukan agar halaman HTML dapat dianalisis dan lebih banyak titik data dapat ditemukan di masa mendatang.

Contoh Kode dalam Tindakan

Saat menjalankan kode dan memberinya tautan lagu di Genius, Anda akan mendapatkan JSON yang akan terlihat seperti yang diberikan di bawah ini. Yang di bawah ini adalah JSON yang kami dapatkan untuk Looking for America oleh Lana Del Rey. Kami hanya menyajikan satu JSON karena ukurannya sangat besar, tetapi Anda juga dapat menjalankannya dengan lagu favorit Anda.

[bahasa kode="python"]
{
“Lirik”: [
[
“[Ayat 1]”,
“Melakukan perjalanan ke San Francisco”,
“Semua teman kami mengatakan kami akan jive”,
“Tidak berhasil, jadi saya berangkat ke Fresno”,
“Itu adalah perjalanan yang cukup indah”,
“Menepi untuk melihat anak-anak di taman”,
“Kami dulu hanya mengkhawatirkan mereka setelah gelap”,
"",
"[Paduan suara]",
“Saya masih mencari Amerika versi saya sendiri”,
“Satu tanpa senjata, di mana bendera dapat berkibar dengan bebas”,
“Tidak ada bom di langit, hanya kembang api saat kau dan aku bertabrakan”,
“Itu hanya mimpi yang ada dalam pikiranku”,
“Itu hanya mimpi yang ada dalam pikiranku”,
“Itu hanya mimpi yang ada dalam pikiranku”,
"",
“[Ayat 2]”,
“Saya terbang kembali ke New York City”,
“Merindukan garis Sungai Hudson”,
“Naik kereta ke Lake Placid”,
“Itu tempat dan waktu lain, di mana”,
“Saya dulu pergi ke drive-in dan mendengarkan musik blues”,
“Begitu banyak hal yang saya pikirkan dua kali sebelum saya melakukannya, tidak”,
"",
"[Paduan suara]",
“Saya masih mencari Amerika versi saya sendiri”,
“Satu tanpa senjata, di mana bendera dapat berkibar dengan bebas”,
“Tidak ada bom di langit, hanya kembang api saat kau dan aku bertabrakan”,
“Itu hanya mimpi yang ada dalam pikiranku”,
“Itu hanya mimpi yang ada dalam pikiranku”,
“Itu hanya mimpi yang ada dalam pikiranku”,
“Itu hanya mimpi yang ada dalam pikiranku”
]
],
"Komentar": [
[
“Mencari Amerika” adalah lagu yang ditulis Lana pada 5 Agustus 2019 tentang penembakan massal di seluruh AS, setelah dia kembali ke LA Pesan dari lagu tersebut bergantung pada Lana yang memimpikan situasi yang lebih baik bagi rakyat Amerika, topik yang telah dinyanyikan sebelumnya di trek seperti "Coachella - Woodstock in My Mind" dan "When The World Was at War We Kept Dancing". Del Rey merilis lagu tersebut melalui platform streaming pada 9 Agustus 2019 sebagai single.”,
“Judul lagu mungkin referensi ke “Amerika” oleh Simon & Garfunkel:”,
“Mereka semua datang untuk mencari Amerika”,
"Del Rey mengambil Instagram-nya untuk membagikan video nyanyiannya di studio dengan teman dan produser Jack Antonoff."
],
[
“Del Rey membagikan lagu tersebut melalui Instagram dengan menambahkan:”,
“Hai teman-teman kembali lebih awal dari Montecito dengan saudara saya pagi ini dan meminta Jack Antonoff untuk datang ke kota karena saya memiliki sebuah lagu di pikiran saya yang ingin saya tulis. Sekarang saya tahu saya bukan seorang politisi dan saya tidak mencoba untuk menjadi maafkan saya untuk memiliki pendapat - tetapi mengingat semua penembakan massal dan penembakan berturut-turut dalam beberapa hari terakhir yang benar-benar mempengaruhi saya. pada tingkat seluler saya hanya ingin memposting video ini yang diambil oleh teknisi kami Laura 20 menit yang lalu. Saya harap Anda menyukainya. Saya menyanyikan cinta untuk chorus yang saya rekam pagi ini. Saya akan menyebutnya 'Mencari Amerika'.”
]
],
“Title”: “Lirik Lana Del Rey – Mencari Amerika | Lirik Jenius”,
“Tanggal rilis”: “9 Agustus 2019”
}
[/kode]

Seberapa Skalabel Solusi Ini?

Sementara solusi yang kami berikan adalah untuk satu lagu, Anda dapat membuat daftar tautan halaman lirik lagu di Genius dan kemudian menjalankan kode pada daftar secara iteratif untuk web scraping lirik lagu menggunakan Python . Anda juga dapat menemukan kecocokan ekspresi reguler untuk halaman Genius yang berisi lirik lagu, lalu merayapi beberapa halaman dari Genius sekaligus, sehingga kode Anda sendiri mengenali halaman yang memiliki lirik.

Namun, jenis solusi DIY ini bagus untuk penghobi pertemanan atau yang memiliki kebutuhan satu kali. Jika kebutuhan Anda lebih komersial dan Anda memiliki masalah pengikisan web di mana Anda memerlukan fitur seperti:

  1. Pengiriman data dalam format tertentu
  2. Penyegaran data dalam frekuensi reguler
  3. Tidak ada biaya pemeliharaan dan infrastruktur

Maka Anda harus pergi dengan penyedia layanan scraping web seperti PromptCloud. Tim kami di PromptCloud bangga dalam menyediakan solusi pengikisan web tingkat perusahaan untuk tim bisnis di seluruh dunia, untuk memungkinkan mereka menggunakan data dalam alur kerja bisnis mereka, dan membuat keputusan berdasarkan data.