Lignes directrices pour le grattage des paroles de chansons à l'aide de Python de Genius
Publié: 2019-08-08Qu'est-ce que Rap Genius ?
Ce qui a commencé sous le nom de Rap-Genius en 2009 est maintenant devenu une société unique de médias de partage de connaissances musicales appelée Genius , qui dessert plus de cent millions de personnes chaque mois . Dans ce blog, nous apprendrons comment récupérer des paroles de chansons sur le Web à l'aide de Python, dans un guide étape par étape.
La plupart des internautes qui aiment la musique doivent connaître Genius. C'est un site Web à croissance rapide qui partage ce qui se cache derrière la chanson - quelles étaient les pensées de l'artiste lorsqu'il ou elle l'écrivait, et bien plus encore . Même des artistes bien connus comme Ariana Grande et Kendrick Lamar collaborent avec Genius, pour donner au monde un aperçu plus approfondi de leur art.
Si quelqu'un veut explorer des paroles de chansons, quel que soit leur objectif, Genius est le site Web à consulter. Leur base de données de plus de vingt-cinq millions de chansons, d'albums, d'artistes ainsi que d'annotations en fait la plus grande base de données de paroles de chansons, partout dans le monde .
Pourquoi One voudrait-il explorer les données de Genius ?
Genius est devenu une communauté musicale, où des contributeurs, des musiciens et même des éditeurs se réunissent pour déconstruire des chansons. Pour cette raison, ils sont devenus la plus grande bibliothèque de paroles de musique au monde. Genius s'est également associé à des sociétés de streaming musical pour augmenter leur base d'utilisateurs.
Genius est l'endroit idéal pour récupérer et explorer des paroles de musique et d'autres données liées à l'industrie de la musique. Car non seulement cela vous donnerait un vaste référentiel de paroles, mais vous auriez également accès aux commentaires des utilisateurs, aux sentiments des utilisateurs. Imaginez, vous pourriez prédire quel genre est actuellement un succès parmi les nouveaux utilisateurs sur la base des données extraites de Genius !.
Comment gratter Web les paroles de chansons de Genius en utilisant Python?
Lorsqu'il s'agit de scraper le Web, peu de langages prennent en charge différents types de projets de scraping Web. Parmi tous, Python est le plus facile à apprendre et est également utile pour différents types de projets. En plus de Python, vous aurez également besoin de packages Python tiers ainsi que d'un éditeur de texte. Vous pouvez suivre les instructions sur cette page car la configuration est la même, quel que soit le site Web que vous scrapez. Une fois que vous avez terminé et que vous avez configuré votre système, vous êtes prêt à commencer.
Où est le Code ?
Nous avons donc beaucoup discuté des paroles des chansons, de Genius et de la configuration de base. Jetons un coup d'œil au code pour gratter les paroles des chansons en utilisant python avant de vous montrer comment l'exécuter et comment le code fonctionne.
[langage de code = "python"]
#!/usr/bin/python
#- * -codage : utf – 8 – * –
importer urllib.request
importer urllib.parse
import urllib.error
depuis bs4 importer BeautifulSoup
importer SSL
importer json
importer ast
importer le système d'exploitation
à partir de urllib.request demande d'importation, urlopen
# Pour ignorer les erreurs de certificat SSL
ctx = ssl.create_default_context()
ctx.check_hostname=Faux
ctx.verify_mode = ssl.CERT_NONE
# Entrée de l'utilisateur
url = input('Entrez l'URL des paroles de la chanson Genius- ')
# Faire croire au site Web que vous y accédez à l'aide d'un navigateur mozilla
req = Request(url, headers = { 'User-Agent' : 'Mozilla/5.0' })
page Web = urlopen(req).read()
# Création d'un objet BeautifulSoup de la page html pour une extraction facile des données.
soupe = BeautifulSoup(page web, 'html.parser')
html = soup.prettify('utf-8')
chanson_json = {}
song_json["Paroles"] = [] ;
song_json["Commentaires"] = [] ;
#Extrait du titre de la chanson
pour le titre dans soup.findAll('title'):
song_json[“Title”] = title.text.strip()
# Extraire la date de sortie de la chanson
pour span dans soup.findAll('span', attrs = {'class': 'metadata_unit-info metadata_unit-info–text_only'}):
song_json["Date de sortie"] = span.text.strip()
# Extraire les commentaires sur la chanson
pour div dans soup.findAll('div', attrs = {'class': 'rich_text_formatting'}):
commentaires = div.text.strip().split("n")
pour un commentaire dans les commentaires :
si commentaire !="" :
song_json["Commentaires"].append(commentaire);
#Extraire les Paroles de la chanson
pour div dans soupe.findAll('div', attrs = {'class': 'lyrics'}):
song_json[“Paroles”].append(div.text.strip().split(“n”));
#Enregistrer le json créé avec le nom du fichier comme titre + .json
avec open(song_json["Title"] + '.json', 'w') comme fichier de sortie :
json.dump(song_json, outfile, indent = 4,assure_ascii = False)
# Enregistrez le contenu html dans un fichier html avec le nom comme titre + .html
avec open(song_json["Title"] + '.html', 'wb') comme fichier :
fichier.write(html)
print('———-L'extraction des données est terminée. Vérifier le fichier json.———-')
[/code]
Pour exécuter le code ci-dessus, il vous suffit de l'enregistrer dans un fichier avec l'extension .py. Vous pouvez donc l'enregistrer dans un fichier avec le nom songLyricsExtractor.py par exemple, puis depuis le terminal exécuter la commande :
[langage de code = "python"]
python chansonLyricsExtractor.py
[/code]
Lorsque vous l'exécuterez, vous serez invité à entrer une URL. Il peut s'agir d'un lien vers n'importe quelle chanson du site Web de Genius. Vous pouvez utiliser ce lien pour Looking for America de Lana Del Rey. Nous avons extrait les paroles de cette chanson de Genius, pour vous montrer comment le code fonctionne en action, et cela est couvert plus tard dans le blog.

Explication du code
Avant d'exécuter le code et de comprendre ce qu'il vous donne, essayons de comprendre le code lui-même. Comme toujours, nous utilisons BS4 (ou Beautiful Soup), une bibliothèque qui permet d'analyser une page HTML.
Au tout début, nous obtenons la page Web et la convertissons en un objet Beautiful Soup à partir duquel nous pouvons récupérer des divs, des spans, des titres et d'autres balises, avec des attributs spécifiques. Nous utilisons ces techniques pour explorer les paroles, les commentaires, le titre de la page Web, ainsi que le jour où la chanson est réellement sortie. Une fois que nous avons récupéré ces données, nous les sauvegardons dans un fichier JSON, avec le nom-titre de la page + extension.json. Nous enregistrons également le fichier HTML avec le nom titre de l'extension page+.html. Ceci est fait pour que la page HTML puisse être analysée et que d'autres points de données puissent être trouvés à l'avenir.
Un exemple du code en action
En exécutant le code et en lui donnant le lien d'une chanson sur Genius, vous obtiendrez un JSON qui ressemblera à celui donné ci-dessous. Celui ci-dessous est le JSON que nous obtenons pour Looking for America de Lana Del Rey. Nous n'avons présenté qu'un seul JSON car ils sont si volumineux, mais vous pouvez également l'exécuter sur vos chansons préférées.
[langage de code = "python"]
{
"Paroles": [
[
"[Verset 1]",
"J'ai fait un voyage à San Francisco",
"Tous nos amis ont dit que nous allions danser",
"Ça n'a pas marché, alors je suis parti pour Fresno",
"C'était une route assez pittoresque",
"Arrêté pour surveiller les enfants dans le parc",
"Avant, nous ne nous inquiétions pour eux qu'après la tombée de la nuit",
"",
"[Refrain]",
"Je suis toujours à la recherche de ma propre version de l'Amérique",
"Un sans le fusil, où le drapeau peut flotter librement",
"Pas de bombes dans le ciel, seulement des feux d'artifice quand vous et moi nous heurtons",
"C'est juste un rêve que j'avais en tête",
"C'est juste un rêve que j'avais en tête",
"C'est juste un rêve que j'avais en tête",
"",
"[Verset 2]",
"J'ai pris l'avion pour New York",
"Manqué cette ligne de la rivière Hudson",
"J'ai pris un train jusqu'à Lake Placid",
"C'est un autre lieu et un autre moment, où",
"J'allais dans les ciné-parcs et j'écoutais le blues",
"Tellement de choses auxquelles je réfléchis à deux fois avant de le faire, non",
"",
"[Refrain]",
"Je suis toujours à la recherche de ma propre version de l'Amérique",
"Un sans le fusil, où le drapeau peut flotter librement",
"Pas de bombes dans le ciel, seulement des feux d'artifice quand vous et moi nous heurtons",
"C'est juste un rêve que j'avais en tête",
"C'est juste un rêve que j'avais en tête",
"C'est juste un rêve que j'avais en tête",
"C'est juste un rêve que j'avais en tête"
]
],
"Commentaires": [
[
"" Looking for America "est une chanson que Lana a écrite le 5 août 2019 concernant les fusillades de masse à travers les États-Unis, une fois de retour à Los Angeles. Le message de la chanson repose sur le fait que Lana rêve d'une meilleure situation pour le peuple américain, un sujet qu'elle a déjà chanté dans des morceaux comme "Coachella - Woodstock in My Mind" et "When The World Was at War We Kept Dancing". Del Rey a sorti la chanson via des plateformes de streaming le 9 août 2019 en tant que single.”,
"Le titre de la chanson pourrait être une référence à "America" de Simon & Garfunkel :",
"Ils sont tous venus chercher l'Amérique",
"Del Rey a pris son Instagram pour partager une vidéo d'elle chantant en studio avec son ami et producteur Jack Antonoff."
],
[
"Del Rey a partagé la chanson via Instagram en ajoutant :",
"Salut les gens sont revenus tôt de Montecito avec mon frère ce matin et ont demandé à Jack Antonoff de venir en ville parce que j'avais une chanson en tête que je voulais écrire. Maintenant, je sais que je ne suis pas un politicien et je n'essaie pas de l'être, alors excusez-moi d'avoir une opinion - mais à la lumière de toutes les fusillades de masse et des fusillades consécutives de ces derniers jours qui m'ont vraiment affecté au niveau cellulaire, je voulais juste publier cette vidéo que notre ingénieur Laura a prise il y a 20 minutes. J'espère que tu aimes. Je chante l'amour sur les refrains que j'ai enregistrés ce matin. Je vais l'appeler "À la recherche de l'Amérique".
]
],
"Titre": "Lana Del Rey - À la recherche de l'Amérique Paroles | Paroles de génie »,
"Date de sortie": "9 août 2019"
}
[/code]
Dans quelle mesure cette solution est-elle évolutive ?
Bien que la solution que nous avons fournie concerne une seule chanson, vous pouvez créer une liste de liens vers des pages de paroles de chansons sur Genius, puis exécuter le code de la liste de manière itérative pour récupérer des paroles de chansons sur le Web à l'aide de Python . Vous pouvez également trouver une correspondance d'expression régulière pour les pages Genius qui contiennent des paroles de chansons, puis explorer plusieurs pages de Genius en une seule fois, de sorte que votre code lui-même reconnaît les pages qui contiennent des paroles.
Cependant, ces types de solutions de bricolage sont bonnes pour l'amateur en couple ou celui qui a un besoin ponctuel. Dans le cas où votre besoin est plus commercial et que vous avez un problème de scraping Web où vous avez besoin de fonctionnalités telles que :
- Livraison des données dans des formats spécifiques
- Actualisation des données à fréquence régulière
- Pas de frais de maintenance et d'infrastructure
Ensuite, vous devriez opter pour un fournisseur de services de grattage Web comme PromptCloud. Notre équipe de PromptCloud est fière de fournir des solutions de grattage Web de niveau entreprise aux équipes commerciales du monde entier, pour leur permettre d'utiliser les données dans leurs flux de travail d'entreprise et de prendre des décisions basées sur les données.
