Используйте веб-сканер Python для сканирования текстов музыки в облаке NetEase.

Python исходный код рептилия регулярное выражение

基于Python网易云音乐歌词爬取

Облачная музыка NetEase

Несколько дней назад редактор поделился с вами анализом визуализации данных.В конце статьи я упомянул сканирование текстов песен NetEase Cloud Music.Сегодня я поделюсь с вами методом сканирования текстов песен NetEase Cloud Music.

Общая идея этой статьи такова:

  1. Найдите правильный URL и получите исходный код;

  2. Используйте bs4 для анализа исходного кода, чтобы получить название песни и идентификатор песни;

  3. Вызовите API NetEase Cloud Song, чтобы получить текст песни;

  4. Запишите текст в файл и сохраните его локально.

Цель этой статьи — получить тексты песен NetEase Cloud Music и сохранить их в локальный файл. Общая схема эффекта выглядит следующим образом:

基于Python网易云音乐歌词爬取

Песни Чжао Лэя

В этой статье в качестве объекта сбора данных используется бог народных песен Чжао Лэй, и в частности собираются тексты его песен. Методы сбора других певцов можно сравнить. На следующем рисунке показаны тексты «Чэнду».

基于Python网易云音乐歌词爬取

Песня Чжао Лэя --- "Чэнду"

Вообще говоря, URL-адрес, отображаемый на веб-странице, может быть записан в программе, и после запуска программы можно собрать исходный код веб-страницы, которую мы хотим. Но на веб-сайте NetEase Cloud Music этот способ не работает, потому что URL-адрес на веб-странице является поддельным URL-адресом, а в реальном URL-адресе нет знака #. Без лишних слов, давайте перейдем непосредственно к коду.

基于Python网易云音乐歌词爬取

Получить исходный код веб-страницы

В этой статье используются модули request, bs4, json и re для сбора текстов музыки в облаке NetEase.Не забудьте добавить в программу заголовки и реферер для защиты от хотлинков, чтобы имитировать браузеры и предотвратить отказ в доступе со стороны веб-сайта. Здесь метод get_html используется специально для получения исходного кода, обычно нам также необходимо выполнять обработку исключений и соблюдать меры предосторожности.

Получив исходный код веб-страницы, я проанализировал исходный код и обнаружил, что название и идентификатор песни были глубоко спрятаны.Я искал ее на тысячах Baidu и обнаружил, что она находится в строке 294 исходного кода, скрыт под тегом

    следующим образом. Как показано на рисунке:

    基于Python网易云音乐歌词爬取

    Где существуют название песни и идентификатор

    Затем мы используем Beautiful Soup для получения целевой информации и прямой загрузки кода, как показано ниже:

    基于Python网易云音乐歌词爬取

    Получить название песни и идентификатор

    Здесь следует отметить, что при получении ID ссылку нужно нарезать, а полученное число и есть ID песни, кроме того, через метод get_text() получается название песни, и, наконец, название песни и ID соответствуют друг другу с помощью функции zip.

    После получения идентификатора вы можете войти на внутреннюю страницу, чтобы получить тексты песен, но URL-адрес по-прежнему не является мощным, как показано ниже:

    基于Python网易云音乐歌词爬取

    URL-адрес текста

    Хотя мы можем четко видеть информацию о текстах песен, представленную в черно-белом цвете на веб-странице, мы не можем получить информацию о текстах песен по этому URL-адресу. Редактор нашел URL-адрес текста, захватив пакет, и обнаружил, что это был POST-запрос, и в нем было много данных, которые я не мог понять. Короче говоря, этот URL-адрес не может работать для нас. Как насчет решения?

    Не паникуйте, редактор нашел API NetEase Cloud Music. Просто введите идентификатор песни в ссылку API, чтобы получить текст. Код выглядит следующим образом:

    基于Python网易云音乐歌词爬取

    Вызовите NetEase Cloud API и проанализируйте тексты песен

    В API информация о текстах песен загружается в формате json, поэтому ее необходимо сериализовать и анализировать с помощью json, а также очищать с помощью регулярных выражений (в качестве примера возьмем песню Чжао Лея «Chengdu»):

    基于Python网易云音乐歌词爬取

    Необработанные данные

    Очевидно, что есть время, когда текст представлен перед текстом, для нас это относится к нечистой информации, поэтому нам нужно использовать регулярные выражения для сопоставления. Это правда, что регулярные выражения — не единственный метод, и друзья также могут использовать слайсинг или другие методы очистки данных, поэтому я не буду здесь вдаваться в подробности.

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

    基于Python网易云音乐歌词爬取

    Запись файлов и частей тела программы

    Теперь, пока мы запускаем программу и вводим идентификатор певца, программа автоматически захватывает текст песни, спетой певцом, и сохраняет ее локально. В этом примере идентификатор Чжао Лея — 6731. После ввода числа 6731 текст песни Чжао Лея будет записан, как показано на следующем рисунке:

    基于Python网易云音乐歌词爬取

    Результат работы программы

    После этого мы можем найти сгенерированный текст лирики в том же каталоге программы-скрипта, и лирика успешно сканируется.

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

    В этой статье рассказывается, как собирать тексты песен NetEase Cloud Как собирать песни NetEase Cloud? Спешите и нажмите на предыдущую статью Xiaobian~~