Instrucțiuni pentru răzuirea versurilor melodiilor folosind Python de la Genius
Publicat: 2019-08-08Ce este Rap Genius?
Ceea ce a început inițial ca Rap-Genius în 2009 a evoluat acum într-o companie media unică de schimb de cunoștințe muzicale numită Genius , care deservește mai mult de o sută de milioane de oameni în fiecare lună . În acest blog, vom învăța cum să răzuiți versurile melodiilor pe web folosind Python, într - un ghid pas cu pas.
Majoritatea utilizatorilor de internet care sunt pasionați de muzică trebuie să fie familiarizați cu Genius. Este un site web în creștere rapidă, care împărtășește ceea ce se află în spatele cântecului - care au fost gândurile artistului când o nota și multe altele . Chiar și artiști cunoscuți precum Ariana Grande și Kendrick Lamar colaborează cu Genius, pentru a oferi lumii o perspectivă mai profundă asupra artei lor.
Dacă cineva dorește să acceseze cu crawlere versurile cântecelor, indiferent de scopul lor, Genius este site-ul pe care să accesați. Baza lor de date cu peste douăzeci și cinci de milioane de melodii, albume, artiști, precum și adnotări le fac cea mai mare bază de date de versuri de cântece, oriunde în lume .
De ce ar vrea cineva să acceseze cu crawlere datele de la Genius?
Genius a evoluat într-o comunitate muzicală, în care colaboratorii, muzicienii și chiar editorii se reunesc pentru a deconstrui melodiile. Din acest motiv, au devenit cea mai mare bibliotecă de versuri muzicale din lume. Genius a colaborat și cu companii de streaming muzical pentru a-și crește baza de utilizatori.
Genius este locul în care puteți să culegeți și să accesați cu crawlere versurile muzicale și alte date legate de industria muzicală din acesta. Deoarece nu numai că ți-ar oferi un depozit vast de versuri, dar vei avea și acces la comentariile utilizatorilor, la sentimentele utilizatorilor. Imaginați-vă că ați putea prezice ce gen este în prezent un succes printre utilizatorii noi, pe baza datelor extrase din Genius!.
Cum să răzuiesc versurile melodiilor de la Genius pe Web folosind Python?
Când vine vorba de scraping web, puține limbi acceptă diferite tipuri de proiecte de web scraping. Printre toate, Python este cel mai ușor de învățat și este, de asemenea, util pentru diferite tipuri de proiecte. Alături de Python, veți avea nevoie și de pachete Python terțe, precum și de un editor de text. Puteți urma instrucțiunile de pe această pagină, deoarece configurarea este aceeași, indiferent de site-ul web pe care îl eliminați. După ce ați terminat și ați configurat sistemul, sunteți gata să începeți.
Unde este Codul?
Așa că am discutat multe despre versurile melodiilor, Genius și configurația de bază. Să vedem codul pentru scraping versuri melodiilor folosind python înainte să vă arăt cum să-l rulați și cum funcționează codul.
[limbajul codului=”python”]
#!/usr/bin/python
#- * -codare: utf – 8 – * –
import urllib.request
import urllib.parse
import urllib.error
de la bs4 import BeautifulSoup
import ssl
import json
import ast
import os
din urllib.request import Request, urlopen
# Pentru ignorarea erorilor de certificat SSL
ctx = ssl.create_default_context()
ctx.check_hostname = Fals
ctx.verify_mode = ssl.CERT_NONE
# Intrare de la utilizator
url = input('Introduceți versurile melodiei Genius Url- ')
# A face site-ul web să creadă că îl accesați folosind un browser Mozilla
req = Solicitare(url, anteturi = { 'User-Agent' : 'Mozilla/5.0' })
pagina web = urlopen(req).read()
# Crearea unui obiect BeautifulSoup al paginii html pentru extragerea ușoară a datelor.
supă = BeautifulSoup (pagina web, 'html.parser')
html = sup.prettify('utf-8')
song_json = {}
song_json[„Versuri”] = [];
song_json[„Comentarii”] = [];
#Extract Titlul melodiei
pentru titlu în sup.findAll('titlu'):
song_json[„Titlu”] = title.text.strip()
# Extrageți data lansării melodiei
pentru span în soup.findAll('span', attrs = {'class': 'metadata_unit-info metadata_unit-info–text_only'}):
song_json[„Data lansării”] = span.text.strip()
# Extrageți comentariile la cântec
pentru div în soup.findAll('div', attrs = {'class': 'rich_text_formatting'}):
comentarii = div.text.strip().split(“n”)
pentru comentarii in comentarii:
daca comenteaza!=””:
song_json[„Comentarii”].append(comment);
#Extrage versurile melodiei
pentru div în sup.findAll('div', attrs = {'class': 'versuri'}):
song_json[„Versuri”].append(div.text.strip().split(“n”));
#Salvați json creat cu numele fișierului ca titlu + .json
cu open(song_json[“Titlu”] + „.json”, „w”) ca fișier de ieșire:
json.dump(song_json, outfile, indent = 4, ensure_ascii = False)
# Salvați conținutul html într-un fișier html cu nume ca titlu + .html
cu open(song_json[“Titlu”] + „.html”, „wb”) ca fișier:
file.write(html)
print('———-Extragerea datelor este completă. Verificați fișierul json.———-')
[/cod]
Pentru a rula codul de mai sus, tot ce trebuie să faceți este să îl salvați într-un fișier cu extensia .py. Așa că l-ați putea salva într-un fișier cu numele songLyricsExtractor.py, de exemplu, și apoi din terminal rulați comanda:

[limbajul codului=”python”]
python songLyricsExtractor.py
[/cod]
Când îl rulați, vi se va solicita să introduceți o adresă URL. Acesta poate fi un link către orice melodie de pe site-ul web Genius. Puteți folosi acest link pentru filmul Looking for America de Lana Del Rey. Am răzuit versurile acestei melodii de la Genius, pentru a vă arăta cum funcționează codul în acțiune, iar acest lucru este tratat mai târziu în blog.
Explicația codului
Înainte de a rula codul și de a înțelege ce vă oferă, să încercăm să înțelegem codul în sine. Ca întotdeauna, folosim BS4 (sau Beautiful Soup), o bibliotecă care face analizarea unei pagini HTML.
La început, obținem pagina web și o transformăm într-un obiect Beautiful Soup de unde putem prelua div-uri, spans, titluri și alte etichete, cu atribute specifice. Folosim aceste tehnici pentru a accesa cu crawlere versurile, comentariile, titlul paginii web, precum și ziua în care melodia a fost lansată efectiv. Odată ce am răzuit aceste date, le salvăm într-un fișier JSON, cu numele-titlul extensiei page+.json. Salvăm și fișierul HTML cu numele titlu al extensiei pagini+.html. Acest lucru se face astfel încât pagina HTML să poată fi analizată și mai multe puncte de date pot fi găsite în viitor.
Un exemplu de cod în acțiune
La rularea codului și oferindu-i linkul unei melodii pe Genius, veți obține un JSON care va arăta ceva ca cel de mai jos. Cel de mai jos este JSON-ul pe care îl obținem pentru Looking for America de Lana Del Rey. Am prezentat doar un singur JSON, deoarece au dimensiuni atât de mari, dar îl puteți rula și pe melodiile preferate.
[limbajul codului=”python”]
{
"Versuri": [
[
„[versetul 1]”,
„Am făcut o excursie la San Francisco”,
„Toți prietenii noștri au spus că ne vom duce”,
„Nu a funcționat, așa că am plecat la Fresno”,
„A fost o călătorie destul de pitorească”,
„Am oprit să urmăresc copiii din parc”,
„Obișnuiam să ne facem griji pentru ei doar după întuneric”,
„”,
"[Cor]",
„Încă mai caut propria mea versiune a Americii”,
„Unul fără pistol, unde steagul poate arbora liber”,
„Fără bombe pe cer, doar artificii când tu și cu mine ne ciocnim”,
„Este doar un vis pe care l-am avut în minte”,
„Este doar un vis pe care l-am avut în minte”,
„Este doar un vis pe care l-am avut în minte”,
„”,
„[Versetul 2]”,
„Am zburat înapoi în New York”,
„Am ratat linia râului Hudson”,
„Am luat un tren până la Lake Placid”,
„Acesta este un alt loc și alt timp, unde”,
„Obișnuiam să merg la drive-in și să ascult blues”,
„Atât de multe lucruri la care mă gândesc de două ori înainte de a le face, nu”,
„”,
"[Cor]",
„Încă mai caut propria mea versiune a Americii”,
„Unul fără pistol, unde steagul poate arbora liber”,
„Fără bombe pe cer, doar artificii când tu și cu mine ne ciocnim”,
„Este doar un vis pe care l-am avut în minte”,
„Este doar un vis pe care l-am avut în minte”,
„Este doar un vis pe care l-am avut în minte”,
„Este doar un vis pe care l-am avut în minte”
]
],
„Comentarii”: [
[
„Looking for America” este o melodie pe care Lana a scris-o pe 5 august 2019 cu privire la împușcăturile în masă din SUA, odată ce s-a întors în LA. Mesajul cântecului se bazează pe Lana visând la o situație mai bună pentru americanii, un subiect pe care ea a mai cântat în piese precum „Coachella – Woodstock in My Mind” și „When The World Was at War We Kept Dancing”. Del Rey a lansat melodia prin intermediul platformelor de streaming pe 9 august 2019 ca single.”,
„Titlul piesei ar putea fi o referire la „America” de Simon & Garfunkel:”,
„Toți au venit să caute America”,
„Del Rey și-a luat Instagram pentru a împărtăși un videoclip cu ea cântând în studio cu prietenul și producătorul Jack Antonoff.”
],
[
„Del Rey a distribuit melodia prin Instagram adăugând:”,
„Bună, oameni buni, s-au întors devreme de la Montecito cu fratele meu în această dimineață și l-au rugat pe Jack Antonoff să vină în oraș pentru că aveam în minte o melodie pe care voiam să o scriu. Acum știu că nu sunt politician și nu încerc să fiu atât de scuzat că am o opinie, dar având în vedere toate împușcăturile în masă și împușcăturile spate la spate din ultimele două zile care m-au afectat cu adevărat la nivel celular am vrut doar să postez acest videoclip pe care inginerul nostru Laura l-a făcut acum 20 de minute. Sper că îți place. Cânt dragoste la refrenele pe care le-am înregistrat azi dimineață. O să-i spun „În căutarea Americii”.
]
],
„Titlu”: „Lana Del Rey – Versuri Looking For America | Versuri Genius”,
„Data lansării”: „9 august 2019”
}
[/cod]
Cât de scalabilă este această soluție?
În timp ce soluția pe care am oferit-o este pentru o singură melodie, puteți crea o listă de link-uri către paginile versurilor melodiilor pe Genius și apoi rulați codul de pe listă în mod iterativ pentru versurile melodiilor de scraping web folosind Python . De asemenea, puteți găsi o potrivire regex pentru paginile Genius care conțin versuri ale cântecului și apoi accesați cu crawlere mai multe pagini din Genius dintr-o dată, astfel încât codul dvs. însuși să recunoască paginile care au versuri.
Cu toate acestea, aceste tipuri de soluții de bricolaj sunt bune pentru amatorii de prieteni sau pentru cei care au nevoie de o singură dată. În cazul în care cerințele dvs. sunt mai comerciale și aveți o problemă de scraping web în care aveți nevoie de funcții precum:
- Livrarea datelor în formate specifice
- Reîmprospătarea datelor cu frecvență obișnuită
- Fără costuri de întreținere și infrastructură
Atunci ar trebui să mergeți cu un furnizor de servicii de scraping web precum PromptCloud. Echipa noastră de la PromptCloud se mândrește cu furnizarea de soluții de scraping web la nivel de întreprindere echipelor de afaceri din întreaga lume, pentru a le permite să utilizeze datele în fluxurile lor de lucru și să ia decizii bazate pe date.
