手を取って教えます.Pythonを使ってQQ音楽データを取ります.(第四弾)
26475 ワード
【一、プロジェクト目標】
手を取って教えます.Pythonを使ってQQ音楽データ(第一弾)を取ります.私達はQQ音楽指定歌手のシングルランキングの指定ページ数の曲のタイトル、アルバム名、リンクを再生することを実現しました.
手を取って教えます.Pythonを使ってQQ音楽データ(第二弾)を取ります.私達はQQ音楽指定曲の歌詞と指定曲のトップページから熱い評価を得ることができました.
手を取って教えます.Pythonを使ってQQ音楽データ(第三弾)をキャプチャします.もっと多くの評論を得て、詞雲図を生成します.
今回は三つの項目を一緒にカプセル化し、メニュー制御で異なるデータを取り込む.
【二、必要な倉庫】
主に関連するライブラリは、requests、openpyxl、html、json、wodcloud、jiebaがあります.
単語の雲図背景画像を交換するにはnumpyライブラリとPILライブラリ(pipinstall pillow)が必要です.
生成が必要なら.exeはpyinstaller-Fが必要です.
【三、プロジェクト実現】
1.まずメニューを決めて、どの機能を実現しますか?
①指定された歌手の楽曲情報(タイトル、アルバム、リンク)を取得する
②指定された曲の歌詞を取得する
③指定曲コメントの取得
④生成語雲図
⑤システムを終了する
コードは以下の通りです
whiletrueはメニューを無限に循環させます.
Try…except…エラーでサイクルが終了しないようにする;
他のコードは、設定入力の異なる数字に対応して異なる関数を開きます.
2.パッケージ項目(一)はget_info()
コードは以下の通りです
コードは以下の通りです
手を取って教えます.Pythonを使ってQQ音楽データ(第一弾)を取ります.私達はQQ音楽指定歌手のシングルランキングの指定ページ数の曲のタイトル、アルバム名、リンクを再生することを実現しました.
手を取って教えます.Pythonを使ってQQ音楽データ(第二弾)を取ります.私達はQQ音楽指定曲の歌詞と指定曲のトップページから熱い評価を得ることができました.
手を取って教えます.Pythonを使ってQQ音楽データ(第三弾)をキャプチャします.もっと多くの評論を得て、詞雲図を生成します.
今回は三つの項目を一緒にカプセル化し、メニュー制御で異なるデータを取り込む.
【二、必要な倉庫】
主に関連するライブラリは、requests、openpyxl、html、json、wodcloud、jiebaがあります.
単語の雲図背景画像を交換するにはnumpyライブラリとPILライブラリ(pipinstall pillow)が必要です.
生成が必要なら.exeはpyinstaller-Fが必要です.
【三、プロジェクト実現】
1.まずメニューを決めて、どの機能を実現しますか?
①指定された歌手の楽曲情報(タイトル、アルバム、リンク)を取得する
②指定された曲の歌詞を取得する
③指定曲コメントの取得
④生成語雲図
⑤システムを終了する
コードは以下の通りです
class QQ(): def menu(self): print(' QQ , , 。
') while True: try: print('
1.
2.
3.
4.
5.
') choice = int(input(' :')) if choice == 1: self.get_info() elif choice == 2: self.get_id() self.get_lyric() elif choice == 3: self.get_id() self.get_comment() elif choice == 4: self.wordcloud() elif choice == 5: print(' !') break else: print(' , 。
') except: print(' , 。
')
最初の行のクラスを作成し、2番目の行はメニュー関数を定義します.ここではクラスの実装を使っています.中のすべての関数の最初のパラメータはselfです.whiletrueはメニューを無限に循環させます.
Try…except…エラーでサイクルが終了しないようにする;
他のコードは、設定入力の異なる数字に対応して異なる関数を開きます.
2.パッケージ項目(一)はget_info()
コードは以下の通りです
def get_info(self):
wb=openpyxl.Workbook() # sheet=wb.active # sheet.title='song' # sheet['A1'] =' ' # , A1 sheet['B1'] =' ' # , B1 sheet['C1'] =' ' # , C1 url = 'https://c.y.qq.com/soso/fcgi-bin/client_search_cp' name = input(' :') page = int(input(' :')) for x in range(page): params = { 'ct':'24', 'qqmusic_ver': '1298', 'new_json':'1', 'remoteplace':'sizer.yqq.song_next', 'searchid':'64405487069162918', 't':'0', 'aggr':'1', 'cr':'1', 'catZhida':'1', 'lossless':'0', 'flag_qc':'0', 'p':str(x+1), 'n':'20', 'w':name, 'g_tk':'5381', 'loginUin':'0', 'hostUin':'0', 'format':'json', 'inCharset':'utf8', 'outCharset':'utf-8', 'notice':'0', 'platform':'yqq.json', 'needNewCode':'0' } res = requests.get(url,params=params) json = res.json() list = json['data']['song']['list'] for music in list: song_name = music['name'] # , song_name album = music['album']['name'] # , album link = 'https://y.qq.com/n/yqq/song/' + str(music['mid']) + '.html
' # , link sheet.append([song_name,album,link]) # name、album link , append Excel wb.save(name+' '+str(page*20)+' .xlsx') # Excel print(' !
')
3.パッケージ項目(二)はget_id()とget_リリックコードは以下の通りです
def get_id(self): self.i = input(' :') url_1 = 'https://c.y.qq.com/soso/fcgi-bin/client_search_cp' # url headers = {'user-agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'} params = {'ct': '24', 'qqmusic_ver': '1298', 'new_json': '1', 'remoteplace': 'txt.yqq.song', 'searchid': '71600317520820180', 't': '0', 'aggr': '1', 'cr': '1', 'catZhida': '1', 'lossless': '0', 'flag_qc': '0', 'p': '1', 'n': '10', 'w': self.i, 'g_tk': '5381', 'loginUin': '0', 'hostUin': '0', 'format': 'json', 'inCharset': 'utf8', 'outCharset': 'utf-8', 'notice': '0', 'platform': 'yqq.json', 'needNewCode': '0'} res_music = requests.get(url_1,headers=headers,params=params) json_music = res_music.json() self.id = json_music['data']['song']['list'][0]['id'] # print(self.id) def get_lyric(self): url_2 = 'https://c.y.qq.com/lyric/fcgi-bin/fcg_query_lyric_yqq.fcg' # url headers = { 'origin':'https://y.qq.com', 'referer':'https://y.qq.com/n/yqq/song/001qvvgF38HVc4.html', 'user-agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'} params = { 'nobase64':'1', 'musicid':self.id, '-':'jsonp1', 'g_tk':'5381', 'loginUin':'0', 'hostUin':'0', 'format':'json', 'inCharset':'utf8', 'outCharset':'utf-8', 'notice':'0', 'platform':'yqq.json', 'needNewCode':'0', } res_music = requests.get(url_2,headers=headers,params=params) js_1 = res_music.json() lyric = js_1['lyric'] lyric_html = html.unescape(lyric) # html.unescape