この記事の内容は、非常に簡単な Python クローラーを使用した NetEase Cloud Music のダウンロードに関するものです。一定の参考価値があります。困っている友人は参考にしてください。お役に立てれば幸いです。
偶然、女将さんの猫の「雲と煙が雨に変わる」を聴いて、その気だるい歌声と学生っぽい歌詞に一目惚れし、ずっと聴き続けました。ループの曲です。それからアニメ「私は江小白」を見に行ったのですが、第二期もとても楽しみです…
一目見て帰ってもまた会いたいです…さて、ナンセンスではありません。今回の目標は、NetEase Cloud 内の歌手の ID に基づいて歌手のポピュラー音楽の歌詞とオーディオをダウンロードし、ローカル フォルダーに保存することです。
Python
Selenium (設定方法については、「Selenium の設定」を参照してください)
Chrome ブラウザ (他のブラウザも利用可能であり、それに応じて変更する必要があります)
NetEase Cloud の Web サイトをクロールした友人の場合NetEase Cloud にはクロール防止メカニズムがあることを知っておく必要があり、POST を実行するときに、いくつかの情報パラメータの暗号化機能をシミュレートする必要があります。しかし、ここでは簡単にするために、初心者でも理解できるようにしています。 Selenium はログインをシミュレートするために直接使用され、インターフェイスは音楽と歌詞を直接ダウンロードするために使用されます。
実験手順:
歌手 ID に基づいて歌手の人気曲リスト、曲名、リンクを取得し、CSV に保存します。ファイル;
#Python の実装
歌手情報の取得
browser.switch_to.frame('contentFrame')
読み続けて、曲名とリンクを見つけます。必要な情報は
id ="hotsong-list" タグ内にあり、各行は tr
タグに対応します。したがって、最初にすべての tr
コンテンツを取得してから、単一の tr
を反復処理します。 <pre class="brush:php;toolbar:false">data = browser.find_element_by_id("hotsong-list").find_elements_by_tag_name("tr")</pre>
注: 前者は
、後者は find_elements
、後者はリストを返します。 次のステップは、単一の
タグの内容を解析し、曲名とリンクを取得することです。両方とも class="txt"# にあることがわかります。 ## タグ、リンクは
href 属性、名前は
title 属性で、
get_attribute() 関数を通じて直接取得できます。
for i in range(len(data)):
content = data[i].find_element_by_class_name("txt")
href = content.find_element_by_tag_name("a").get_attribute("href")
title = content.find_element_by_tag_name("b").get_attribute("title")
song_info.append((title, href))
歌詞のダウンロード
形式なので、
json パッケージを使用する必要があります。
そして、直接取得した歌詞のうち、各行にはタイムラインが含まれているため、正規表現を使用して削除する必要があります。完全なコードは次のとおりです。 def get_lyric(self):
url = 'http://music.163.com/api/song/lyric?' + 'id=' + str(self.song_id) + '&lv=1&kv=1&tv=-1'
r = requests.get(url)
json_obj = r.text
j = json.loads(json_obj)
lyric = j['lrc']['lyric']
# 利用正则表达式去除时间轴
regex = re.compile(r'\[.*\]')
final_lyric = re.sub(regex, '', lyric)
return final_lyric
Download Audio
NetEase Cloud はオーディオ ファイル用のインターフェースも提供します。リンクは http://music.163.com/song/med...
##リンク内の # 数字は曲の ID で、曲の ID に基づいてオーディオ ファイルを直接ダウンロードできます。完全なコードは次のとおりです:def get_mp3(self): url = 'http://music.163.com/song/media/outer/url?id=' + str(self.song_id)+'.mp3' try: print("正在下载:{0}".format(self.song_name)) urllib.request.urlretrieve(url, '{0}/{1}.mp3'.format(self.path, self.song_name)) print("Finish...") except: print("Fail...")
Python を使用して NetEase Cloud Music で人気のあるコメントをクロールする方法
##Python クロール qq 音楽を取得するプロセスの例 #
以上がNetEase Cloud Music をダウンロードするための非常にシンプルな Python クローラーの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。