ホームページ > バックエンド開発 > Python チュートリアル > Pythonはqq musicの音楽URLをクロールしてバッチダウンロードします

Pythonはqq musicの音楽URLをクロールしてバッチダウンロードします

高洛峰
リリース: 2017-03-24 16:23:45
オリジナル
2386 人が閲覧しました

この記事では、主に Python を使用して qq music の音楽 URL をクロールし、一括ダウンロードを実現する方法を紹介します。詳細な紹介とサンプル コードが記載されています。誰にとっても一定の参考になると思います。必要な友達は以下を参照してください。

前書き

QQ ミュージックにはまだたくさんの音楽があります。良い音楽をダウンロードしたいのですが、ダウンロードするたびにログインするのは面倒です。そこで、私は qqmusic クローラーを思いつきました。少なくとも、for ループ クローラーの中心となるのは、それを探し始めることです。クロールされる要素の URL (間違っていたら笑わないでください)

実装は次のとおりです

#Find URL:

この URL は見つけるのが簡単ではありません重要なのは、大量のデータから有用なデータを選択し、最終的にそれを実際の音楽に結合したものです:

#url1 : https:// c.y.qq.com/soso/fcgi-bin/client_search_cp?&lossless=0&flag_qc=0&p=1&n=20&w=雨die

#url2:https://c.y.qq.com/base/fcgi-bin/ fcg_music_express_mobile3.fcg?&jsonpCallback =MusicJsonCallback&cid=205361747&[songmid]&C400+songmid+.m4a&guid=6612300644

#url3: http://dl.stream.qqmusic.qq.com/[filename]?vkey=[vkey] (vkey の場合)音楽固有の String) を置き換えます

requests(url1)requests(url1)

由搜索列表得到每个音乐的的songmid和mid(通过笔者观察,这两个值是每一个music特有的)。有了这两个值。下面就得到了完整的url2的具体值。

requests(url2)

検索リストから各音楽の Songmid と Mid を取得します (作成者の観察により、これら 2 つの値はこれら 2 つの値を使用して、url2 の完全な特定の値を取得します。

requests(url2)

検索結果内の各音楽の vkey 値を取得します。著者が観察した結果、ファイル名は C400songmid.m4a になります。次に、url3 の特定の値が決定され、url3 は音楽の実際の URL になります。著者はこの URL の他のパラメータを十分に調べていないため、最大 20 になります。音楽の URL が毎回返されるので、Tencent の音楽を心ゆくまでお楽しみいただけます。

#Code

ここにsrcsのコードブロックがあります:

import requests
import urllib
import json
word = '雨蝶'
res1 = requests.get('https://c.y.qq.com/soso/fcgi-bin/client_search_cp?&t=0&aggr=1&cr=1&catZhida=1&lossless=0&flag_qc=0&p=1&n=20&w='+word)
jm1 = json.loads(res1.text.strip('callback()[]'))
jm1 = jm1['data']['song']['list']
mids = []
songmids = []
srcs = []
songnames = []
singers = []
for j in jm1:
 try:
  mids.append(j['media_mid'])
  songmids.append(j['songmid'])
  songnames.append(j['songname'])
  singers.append(j['singer'][0]['name'])
 except:
  print('wrong')


for n in range(0,len(mids)):
 res2 = requests.get('https://c.y.qq.com/base/fcgi-bin/fcg_music_express_mobile3.fcg?&jsonpCallback=MusicJsonCallback&cid=205361747&songmid='+songmids[n]+'&filename=C400'+mids[n]+'.m4a&guid=6612300644')
 jm2 = json.loads(res2.text)
 vkey = jm2['data']['items'][0]['vkey']
 srcs.append('http://dl.stream.qqmusic.qq.com/C400'+mids[n]+'.m4a?vkey='+vkey+'&guid=6612300644&uin=0&fromtag=66')
ログイン後にコピー

#Download:

srcsであればダウンロードは当然問題ありません。もちろん、src をブラウザにコピーして、歌手と曲のタイトルをダウンロードすることもできます。また、大規模な Python を使用してバッチでダウンロードすることもできます。これは、sogou
写真

をダウンロードするために使用した方法と同様の、単なるループです: (作者の py バージョン: python3.3.3)

print('For '+word+' Start download...') 
x = len(srcs)
for m in range(0,x):
 print(str(m)+'***** '+songnames[m]+' - '+singers[m]+'.m4a *****'+' Downloading...')
 try:
  urllib.request.urlretrieve(srcs[m],'d:/music/'+songnames[m]+' - '+singers[m]+'.m4a')
 except:
  x = x - 1
  print('Download wrong~')
print('For ['+word+'] Download complete '+str(x)+'files !')
ログイン後にコピー

上記 2 つコードの一部は同じ py ファイルに記述されています。実行してキーワードに対応する音楽をダウンロードします Python爬取qq music中的音乐url及批量下载的方法

# 実行中の効果:

Python爬取qq music中的音乐url及批量下载的方法

以下のようにダウンロードが開始されます... ダウンロード ディレクトリに移動して確認してください:

音楽が正常にダウンロードされました。 。 。 この時点で、qqmusic の URL クローラー プログラムのアイデアと実装の説明が完了しました。

#使用法: 🎜🎜🎜MusicPlayer でシェルを作成した生徒は、それを使用できるはずです。実際、これを行う本来の目的は、HTML ベースの音楽プレーヤーにサービスを提供することです。しかし、今私はpyを呼び出すjsのリンクに引っかかっています、私はそれを理解するならば、私に知らせてください。 🎜

以上がPythonはqq musicの音楽URLをクロールしてバッチダウンロードしますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート