Wskazówki dotyczące wycinania tekstów piosenek przy użyciu Pythona od Genius

Opublikowany: 2019-08-08
Spis treści pokaż
Dlaczego ktoś miałby chcieć przeszukiwać dane z Geniusa?
Jak Web Scrapować teksty piosenek od Geniusa za pomocą Pythona?
Gdzie jest Kodeks?
Wyjaśnienie kodu
Przykład kodeksu w działaniu
Jak skalowalne jest to rozwiązanie?

Czym jest geniusz rapu?

To, co zaczęło się początkowo jako Rap-Genius w 2009 roku, teraz przekształciło się w wyjątkową firmę medialną dzielącą się wiedzą muzyczną o nazwie Genius , która obsługuje ponad sto milionów ludzi każdego miesiąca . Na tym blogu, w przewodniku krok po kroku , dowiemy się, jak skrobać teksty piosenek w sieci za pomocą Pythona .

Większość internautów, którzy interesują się muzyką, musi znać Genius. Jest to szybko rozwijająca się strona internetowa , która dzieli się tym, co kryje się za piosenką co myślał artysta, kiedy ją pisał, i wiele więcej . Nawet znani artyści, tacy jak Ariana Grande i Kendrick Lamar, współpracują z Genius, aby dać światu głębszy wgląd w ich sztukę.

Jeśli ktoś chce przeszukiwać teksty piosenek, bez względu na ich cel, Genius jest stroną internetową, do której należy się udać. Ich baza danych zawierająca ponad dwadzieścia pięć milionów piosenek, albumów, wykonawców oraz adnotacje czyni z nich największą bazę tekstów piosenek na całym świecie .

Dlaczego ktoś miałby chcieć przeszukiwać dane z Geniusa?

Genius przekształcił się w społeczność muzyczną, w której współtwórcy, muzycy, a nawet redaktorzy spotykają się, aby dekonstruować utwory. Z tego powodu stali się największą biblioteką tekstów muzycznych na świecie. Genius nawiązał również współpracę z firmami oferującymi strumieniowe przesyłanie muzyki, aby zwiększyć bazę użytkowników.

Genius to miejsce, w którym można przeszukiwać i przeszukiwać strony internetowe z tekstami muzycznymi i innymi danymi związanymi z przemysłem muzycznym. Ponieważ nie tylko dałoby ci to ogromne repozytorium tekstów, ale także miałbyś dostęp do komentarzy użytkowników, sentymentów użytkowników. Wyobraź sobie, że możesz przewidzieć, jaki gatunek jest obecnie hitem wśród nowych użytkowników na podstawie danych pobranych z Genius!.

Jak Web Scrapować teksty piosenek od Geniusa za pomocą Pythona?

Jeśli chodzi o skrobanie sieci, kilka języków obsługuje różne typy projektów skrobania sieci. Wśród wszystkich, Python jest najłatwiejszy do nauczenia, a także przydaje się do różnych typów projektów. Wraz z Pythonem będziesz także potrzebować pakietów Pythona innych firm, a także edytora tekstu. Możesz postępować zgodnie z instrukcjami na tej stronie, ponieważ konfiguracja jest taka sama, bez względu na to, którą witrynę zeskrobujesz. Gdy skończysz i skonfigurujesz system, możesz zacząć.

Gdzie jest Kodeks?

Dlatego dużo dyskutowaliśmy o tekstach piosenek, Geniusie i podstawowej konfiguracji. Rzućmy okiem na kod do scrapingu tekstów piosenek za pomocą Pythona , zanim pokażę ci, jak go uruchomić i jak działa kod.

[język kodu=”python”]
#!/usr/bin/python
#- * -kodowanie: utf – 8 – * –

importuj urllib.request
importuj urllib.parse
importuj urllib.error
z bs4 importuj BeautifulSoup
importuj ssl
importuj json
importuj ast
importuj system
z urllib.request import Żądanie, urlopen

# Do ignorowania błędów certyfikatu SSL

ctx = ssl.utwórz_domyślny_kontekst()
ctx.check_hostname = Fałsz
ctx.verify_mode = ssl.CERT_Brak

# Wejście od użytkownika
url = input('Wprowadź tekst piosenki Genius Url- ')

# Sprawienie, by strona uwierzyła, że ​​uzyskujesz do niej dostęp za pomocą przeglądarki Mozilla
req = Request(url, headers = { 'User-Agent' : 'Mozilla/5.0' })
strona internetowa = urlopen(req).read()

# Tworzenie obiektu BeautifulSoup strony html w celu łatwego wydobycia danych.

zupa = PięknaZupa(strona internetowa, 'html.parser')
html = zupa.prettify('utf-8')
piosenka_json = {}
song_json[„Teksty”] = [];
song_json[„Komentarze”] = [];

#Wyodrębnij tytuł piosenki
dla tytułu w soup.findAll('title'):
song_json[„Tytuł”] = tytuł.tekst.strip()

# Wyodrębnij datę wydania piosenki
for span in soup.findAll('span', attrs = {'class': 'metadata_unit-info metadata_unit-info-text_only'}):
song_json[„Data wydania”] = span.text.strip()

# Wyodrębnij komentarze do utworu
for div w soup.findAll('div', attrs = {'class': 'rich_text_formatting'}):
komentarze = div.text.strip().split(„n”)
za komentarz w komentarzach:
jeśli komentarz!=””:
song_json[„Komentarze”].append(komentarz);

#Wyodrębnij tekst piosenki
for div in soup.findAll('div', attrs = {'class': 'lyrics'}):
song_json[„Teksty”].append(div.text.strip().split(„n”));

#Zapisz plik json utworzony z nazwą pliku jako tytuł + .json
z open(song_json[„Tytuł”] + '.json', 'w') jako plik zewnętrzny:
json.dump(song_json, outfile, wcięcie = 4, upewnij się, że ascii = False)

# Zapisz zawartość html do pliku html z nazwą jako tytuł + .html
z open(song_json[„Tytuł”] + '.html', 'wb') jako plik:
file.write(html)

print('———-Rozpakowywanie danych zakończone. Sprawdź plik json.———-')
[/kod]

Aby uruchomić kod podany powyżej wystarczy zapisać go w pliku z rozszerzeniem .py. Możesz więc zapisać go do pliku o nazwie np. songLyricsExtractor.py, a następnie z terminala uruchomić polecenie:

[język kodu=”python”]
python songLyricsExtractor.py
[/kod]

Po uruchomieniu zostaniesz poproszony o podanie adresu URL. Może to być link do dowolnego utworu w witrynie Genius. Możesz użyć tego linku do Lany Del Rey's Looking for America. Wygrzebaliśmy tekst tej piosenki z Genius, aby pokazać, jak działa kod w akcji, co zostanie omówione w dalszej części bloga.

Wyjaśnienie kodu

Zanim przejdziemy do uruchamiania kodu i zrozumienia, co on daje, spróbujmy zrozumieć sam kod. Jak zawsze używamy BS4 (lub Beautiful Soup), biblioteki, która analizuje strony HTML.

Na samym początku otrzymujemy stronę internetową i konwertujemy ją na obiekt Beautiful Soup, z którego możemy pobrać div, span, tytuły i inne tagi o określonych atrybutach. Używamy tych technik do indeksowania tekstów, komentarzy, tytułu strony internetowej, a także dnia, w którym utwór został faktycznie wydany. Po zeskrobaniu tych danych zapisujemy je w pliku JSON, z nazwą-tytuł rozszerzenia strona+.json. Zapisujemy również plik HTML z nazwą tytuł rozszerzenia strona+.html. Odbywa się to, aby strona HTML mogła być analizowana i można było znaleźć więcej punktów danych w przyszłości.

Przykład kodeksu w działaniu

Po uruchomieniu kodu i podaniu linku do utworu w Genius otrzymasz JSON, który będzie wyglądał podobnie do tego podanego poniżej. Ten poniżej to JSON, który otrzymujemy dla Looking for America autorstwa Lany Del Rey. Zaprezentowaliśmy tylko jeden plik JSON, ponieważ są tak duże, ale możesz go również porównać ze swoimi ulubionymi utworami.

[język kodu=”python”]
{
"Tekst piosenki": [
[
„[Wiersz 1]”,
„Pojechałem na wycieczkę do San Francisco”,
„Wszyscy nasi przyjaciele powiedzieli, że będziemy jive”,
„Nie działało, więc wyjechałem do Fresno”,
„To była dość malownicza przejażdżka”,
„Zjechałem, żeby popilnować dzieci w parku”,
„Kiedyś martwiliśmy się o nich tylko po zmroku”,
„”,
"[Chór]",
„Wciąż szukam własnej wersji Ameryki”,
„Ten bez broni, gdzie flaga może swobodnie latać”,
„Żadnych bomb na niebie, tylko fajerwerki, kiedy ty i ja się zderzamy”,
„To tylko sen, który miałem na myśli”,
„To tylko sen, który miałem na myśli”,
„To tylko sen, który miałem na myśli”,
„”,
„[Wiersz 2]”,
„Przyleciałem z powrotem do Nowego Jorku”,
„Przegapiłem linię rzeki Hudson”,
„Pojechałem pociągiem do Lake Placid”,
„To inne miejsce i czas, gdzie”,
„Kiedyś chodziłem na drive-in i słuchałem bluesa”,
„Tak wiele rzeczy, o których myślę dwa razy, zanim to zrobię, nie”,
„”,
"[Chór]",
„Wciąż szukam własnej wersji Ameryki”,
„Ten bez broni, gdzie flaga może swobodnie latać”,
„Żadnych bomb na niebie, tylko fajerwerki, kiedy ty i ja się zderzamy”,
„To tylko sen, który miałem na myśli”,
„To tylko sen, który miałem na myśli”,
„To tylko sen, który miałem na myśli”,
„To tylko sen, który miałem na myśli”
]
],
"Uwagi": [
[
„”Looking for America” to piosenka, którą Lana napisała 5 sierpnia 2019 r. o masowych strzelaninach w Stanach Zjednoczonych, kiedy wróciła do Los Angeles. śpiewał wcześniej w utworach takich jak „Coachella – Woodstock in My Mind” i „When The World Was at War We Kept Dancing”. Del Rey wydał piosenkę za pośrednictwem platform streamingowych 9 sierpnia 2019 r. jako singiel.”,
„Tytuł piosenki może nawiązywać do „Ameryki” Simona i Garfunkela:”,
„Wszyscy przybyli szukać Ameryki”,
„Del Rey zabrała ją na Instagram, aby podzielić się filmem, w którym śpiewa w studiu z przyjacielem i producentem Jackiem Antonoffem”.
],
[
„Del Rey udostępnił piosenkę za pośrednictwem Instagrama, dodając:”,
„Cześć ludzie wrócili dziś rano z Montecito z moim bratem i zaprosili Jacka Antonoffa do miasta, ponieważ miałem w głowie piosenkę, którą chciałem napisać. Teraz wiem, że nie jestem politykiem i nie staram się tak bardzo wybaczyć, że mam opinię, ale w świetle wszystkich masowych strzelanin i strzelanin w ciągu ostatnich kilku dni, które naprawdę mnie wpłynęły na poziomie komórkowym chciałem tylko opublikować ten film, który nasza inżynierka Laura zrobiła 20 minut temu. Mam nadzieję, że to lubisz. Śpiewam miłość do refrenów, które nagrałem dziś rano. Nazwę to „W poszukiwaniu Ameryki”.
]
],
„Title”: „Lana Del Rey – Looking For America” - tekst piosenki, tłumaczenie piosenki, teledysk na Tekstowo.pl Genialne teksty”,
„Data wydania”: „9 sierpnia 2019 r.”
}
[/kod]

Jak skalowalne jest to rozwiązanie?

Chociaż rozwiązanie, które dostarczyliśmy, dotyczy jednego utworu, możesz utworzyć listę linków do stron z tekstami piosenek w Genius, a następnie uruchomić kod na liście iteracyjnie , aby przeszukiwać teksty piosenek z Internetu za pomocą Pythona . Możesz także znaleźć dopasowanie do wyrażenia regularnego dla stron Genius, które zawierają teksty piosenek, a następnie zaindeksować wiele stron z Genius za jednym razem, tak aby kod sam rozpoznawał strony z tekstami.

Jednak tego typu rozwiązania typu „zrób to sam” są dobre dla zaprzyjaźnionego hobbysty lub kogoś, kto ma jednorazową potrzebę. W przypadku, gdy Twoje wymagania są bardziej komercyjne i masz problem ze skrobaniem sieci, w którym potrzebujesz funkcji, takich jak:

  1. Dostarczanie danych w określonych formatach
  2. Odświeżanie danych w regularnych odstępach czasu
  3. Brak kosztów utrzymania i infrastruktury

Następnie powinieneś udać się z dostawcą usług skrobania stron internetowych, takim jak PromptCloud. Nasz zespół w PromptCloud szczyci się dostarczaniem rozwiązań klasy korporacyjnej do przeszukiwania sieci dla zespołów biznesowych na całym świecie, aby umożliwić im korzystanie z danych w ramach biznesowych przepływów pracy i podejmowanie decyzji opartych na danych.