Рекомендации по очистке текстов песен с использованием Python от Genius

Опубликовано: 2019-08-08
Оглавление показать
Зачем нужно сканировать данные от Genius?
Как копировать тексты песен Genius в Интернете с помощью Python?
Где находится «Кодекс»?
Объяснение кода
Пример кода в действии
Насколько масштабируемо это решение?

Что такое гений рэпа?

То, что изначально начиналось как Rap-Genius в 2009 году, теперь превратилось в уникальную медиа-компанию по обмену музыкальными знаниями под названием Genius , которая ежемесячно обслуживает более ста миллионов человек . В этом блоге мы узнаем, как копировать тексты песен из Интернета с помощью Python, в пошаговом руководстве.

Большинство пользователей Интернета, увлекающихся музыкой, должны быть знакомы с Genius. Это быстрорастущий веб-сайт , на котором рассказывается о том, что стоит за песней о чем думал артист, когда он или она ее записывали, и многое другое . Даже такие известные художники, как Ариана Гранде и Кендрик Ламар, сотрудничают с Genius, чтобы дать миру более глубокое представление об их искусстве.

Если кто-то хочет просмотреть тексты песен, независимо от их цели, Genius — это веб-сайт, на который можно пойти. Их база данных, содержащая более двадцати пяти миллионов песен, альбомов, исполнителей, а также аннотаций, делает их самой большой базой данных текстов песен в любой точке мира .

Зачем нужно сканировать данные от Genius?

Genius превратился в музыкальное сообщество, где участники, музыканты и даже редакторы собираются вместе, чтобы деконструировать песни. По этой причине они стали самой большой библиотекой музыкальных текстов в мире. Genius также сотрудничает с компаниями потоковой передачи музыки, чтобы увеличить их пользовательскую базу.

Genius — это место, где можно собирать и сканировать музыку, тексты песен и другие данные, связанные с музыкальной индустрией. Так как это не только даст вам огромное хранилище текстов песен, но вы также получите доступ к комментариям пользователей, их настроениям. Представьте, вы могли бы предсказать, какой жанр в настоящее время является хитом среди новых пользователей, основываясь на данных, извлеченных из Genius!.

Как копировать тексты песен Genius в Интернете с помощью Python?

Когда дело доходит до веб-скрейпинга, несколько языков поддерживают разные типы веб-скрейпинга. Среди всех Python проще всего изучить, а также он пригодится для разных типов проектов. Наряду с Python вам также понадобятся некоторые сторонние пакеты Python, а также текстовый редактор. Вы можете следовать инструкциям на этой странице, так как настройка одинакова, независимо от того, какой веб-сайт вы очищаете. Когда вы закончите и настроите свою систему, вы готовы начать.

Где находится «Кодекс»?

Итак, мы много обсудили тексты песен, Genius и основные настройки. Давайте взглянем на код для очистки текстов песен с помощью Python , прежде чем я покажу вам, как его запустить и как работает код.

[язык кода = «питон»]
#!/usr/бин/питон
#- * -кодирование: utf – 8 – * –

импортировать urllib.request
импортировать urllib.parse
импортировать urllib.error
из bs4 импортировать BeautifulSoup
импорт SSL
импортировать json
импортировать
импорт ОС
из запроса импорта urllib.request, urlopen

# Для игнорирования ошибок сертификата SSL

ctx = ssl.create_default_context()
ctx.check_hostname = Ложь
ctx.verify_mode = ssl.CERT_NONE

# Ввод от пользователя
url = input('Введите текст песни Genius Url- ')

# Заставить веб-сайт поверить, что вы заходите на него с помощью браузера Mozilla
req = Request(url, headers = {'User-Agent': 'Mozilla/5.0'})
веб-страница = urlopen(req).read()

# Создание объекта BeautifulSoup html-страницы для удобного извлечения данных.

суп = BeautifulSoup (веб-страница, 'html.parser')
html = суп.prettify('utf-8')
песня_json = {}
song_json["Текст"] = [];
song_json["Комментарии"] = [];

#Извлечь Название песни
для заголовка в soap.findAll('title'):
song_json["Название"] = title.text.strip()

# Извлечь дату выпуска песни
для span в супе.findAll('span', attrs = {'class': 'metadata_unit-info metadata_unit-info–text_only'}):
song_json["Дата выпуска"] = span.text.strip()

# Извлеките комментарии к песне
для div в супе.findAll('div', attrs = {'class': 'rich_text_formatting'}):
комментарии = div.text.strip().split("n")
для комментариев в комментариях:
если комментарий!=””:
song_json["Комментарии"].append(комментарий);

#Извлечь текст песни
для div в супе.findAll('div', attrs = {'class': 'lyrics'}):
song_json["Текст"].append(div.text.strip().split("n"));

# Сохраните созданный json с именем файла как title + .json
с open(song_json["Title"] + '.json', 'w') в качестве выходного файла:
json.dump(song_json, outfile, отступ = 4, sure_ascii = False)

# Сохраните html-контент в html-файл с именем title + .html
с open(song_json["Title"] + '.html', 'wb') в виде файла:
файл.записать(html)

print('———-Извлечение данных завершено. Проверьте файл json.———-')
[/код]

Чтобы запустить приведенный выше код, все, что вам нужно сделать, это сохранить его в файле с расширением .py. Таким образом, вы можете сохранить его в файл с именем, например, songLyricsExtractor.py, а затем из терминала запустить команду:

[язык кода = «питон»]
Песня PythonLyricsExtractor.py
[/код]

Когда вы запустите его, вам будет предложено ввести URL-адрес. Это может быть ссылка на любую песню на сайте Genius. Вы можете использовать эту ссылку для Ланы Дель Рей в поисках Америки. Мы взяли текст этой песни из Genius, чтобы показать вам, как код работает в действии, и об этом позже в блоге.

Объяснение кода

Прежде чем мы приступим к запуску кода и пониманию того, что он вам дает, давайте попробуем разобраться в самом коде. Как всегда, мы используем BS4 (или Beautiful Soup), библиотеку, которая выполняет синтаксический анализ HTML-страницы.

В самом начале мы получаем веб-страницу и конвертируем ее в объект Beautiful Soup, из которого мы можем выбирать div, span, заголовки и другие теги с определенными атрибутами. Мы используем эти методы для сканирования текстов песен, комментариев, названия веб-страницы, а также даты фактического выпуска песни. После очистки этих данных мы сохраняем их в файле JSON с именем-заголовком страницы + расширение .json. Мы также сохраняем файл HTML с именем title с расширением page+.html. Это делается для того, чтобы HTML-страницу можно было проанализировать и в будущем можно было найти больше точек данных.

Пример кода в действии

Запустив код и предоставив ему ссылку на песню в Genius, вы получите JSON, который будет выглядеть примерно так, как показано ниже. Тот, что ниже, — это JSON, который мы получаем для «В поисках Америки» Ланы Дель Рей. Мы представили только один JSON, так как они очень большие по размеру, но вы также можете использовать его для своих любимых песен.

[язык кода = «питон»]
{
"Текст песни": [
[
«[Куплет 1]»,
«Совершил поездку в Сан-Франциско»,
«Все наши друзья сказали, что мы будем джайвить»,
«Не получилось, поэтому я уехал во Фресно»,
«Это была довольно живописная поездка»,
«Остановился посмотреть на детей в парке»,
«Раньше мы беспокоились за них только после наступления темноты»,
"",
"[Хор]",
«Я все еще ищу свою версию Америки»,
«Тот, кто без ружья, где свободно развевается флаг»,
«Никаких бомб в небе, только фейерверки, когда мы с тобой сталкиваемся»,
«Это просто сон, который я имел в виду»,
«Это просто сон, который я имел в виду»,
«Это просто сон, который я имел в виду»,
"",
"[Стих 2]",
«Я улетел обратно в Нью-Йорк»,
«Пропустил эту линию реки Гудзон»,
«Сел на поезд до Лейк-Плэсид»,
«Это другое место и время, где»,
«Раньше я ходил в автосалоны и слушал блюз»,
«Так много вещей, о которых я дважды подумаю, прежде чем сделать, нет»,
"",
"[Хор]",
«Я все еще ищу свою версию Америки»,
«Тот, кто без ружья, где свободно развевается флаг»,
«Никаких бомб в небе, только фейерверки, когда мы с тобой сталкиваемся»,
«Это просто сон, который я имел в виду»,
«Это просто сон, который я имел в виду»,
«Это просто сон, который я имел в виду»,
«Это просто сон, который я имел в виду»
]
],
"Комментарии": [
[
«В поисках Америки» — это песня, которую Лана написала 5 августа 2019 года в связи с массовыми расстрелами в США, когда она вернулась в Лос-Анджелес. Послание песни основано на том, что Лана мечтает о лучшей ситуации для американского народа, на эту тему она ранее пел в таких треках, как «Coachella — Woodstock in My Mind» и «When The World Was at War We Kept Dancing». Дель Рей выпустил песню на стриминговых платформах 9 августа 2019 года как сингл.»,
«Название песни может быть отсылкой к «Америке» Саймона и Гарфанкеля:»,
«Они все приехали искать Америку»,
«Дель Рей воспользовалась своим Instagram, чтобы поделиться видео своего пения в студии с другом и продюсером Джеком Антоноффом».
],
[
«Дель Рей поделился песней в Instagram, добавив:»,
«Привет, ребята, рано утром вернулись из Монтесито с моим братом и попросили Джека Антоноффа приехать в город, потому что у меня на уме была песня, которую я хотел написать. Теперь я знаю, что я не политик, и я не пытаюсь быть таким, извините за свое мнение, но в свете всех массовых расстрелов и перестрелок за последние пару дней, которые действительно повлияли на меня. на клеточном уровне я просто хотел опубликовать это видео, которое наш инженер Лора сняла 20 минут назад. Я надеюсь, вам понравится. Я пою любовь к припевам, которые записал сегодня утром. Я назову это «В поисках Америки».
]
],
«Название»: «Лана Дель Рей – В поисках Америки Текст | Гениальная лирика»,
«Дата выпуска»: «9 августа 2019 г.»
}
[/код]

Насколько масштабируемо это решение?

Хотя решение, которое мы предоставили, предназначено для одной песни, вы можете создать список ссылок на страницы с текстами песен в Genius, а затем итеративно запустить код в списке для веб-скрейпинга текстов песен с помощью Python . Вы также можете найти совпадение регулярных выражений для страниц Genius, содержащих тексты песен, а затем просканировать несколько страниц Genius за один раз, так что ваш код сам распознает страницы с текстами песен.

Тем не менее, эти типы самодельных решений хороши для начинающих любителей или тех, у кого есть одноразовая потребность. Если ваше требование является более коммерческим, и у вас есть проблема веб- скрейпинга, где вам нужны такие функции, как:

  1. Доставка данных в определенных форматах
  2. Обновление данных с регулярной периодичностью
  3. Отсутствие затрат на техническое обслуживание и инфраструктуру

Тогда вам следует обратиться к поставщику услуг веб-скрейпинга, такому как PromptCloud. Наша команда в PromptCloud гордится тем, что предоставляет корпоративные решения для парсинга веб-страниц бизнес-командам по всему миру, чтобы они могли использовать данные в своих бизнес-процессах и принимать решения на основе данных.