爬虫類小さなケース:単一のクエリのシンガーソング

要件:アーティスト名を入力しますが、シングル曲の歌手を問い合わせます

注:データソースのQQ音楽、ストレスを低減するためにQQの音楽サーバ、回避がアクセスを拒否し、要求されたデータの量が大きすぎではありません。

コード学習の使用のみ

 

リファレンスライブラリ要求
のインポートが要求

制御ループ 
フラグ= 

#は1曲得る
DEF getmusiclist(歌手、= 「」)を:
     辞書ダウンロードしてgetメソッドを呼び出す 
    URLを= " https://cyqq.com/soso/fcgi-bin/ client_search_cp ' 
    #のカスタマイズリクエストヘッダ、ブラウザ偽装 
    ヘッダー= {
         " オリジン"" https://y.qq.com " " リファラー"" https://y.qq.com/portal/search.html " "ユーザーエージェント"" のMozilla / 5.0(Macintoshでは、インテルのMac OS X 10_14_3)のAppleWebKit / 537.36(KHTML、ヤモリ等)クローム/ 78.0.3904.108サファリ/ 537.36 OPR / 65.0.3467.78(版百度)
    } 
    请求参数 
    のparams = {
         ' CT '' 24 ' ' qqmusic_ver '' 1298 ' ' new_json '' 1 ' ' remoteplace '' txt.yqq。歌"' searchid '' 70717568573156220 ' ' T '' 0 ' ' AGGR '' 1 ' ' CR '' 1 ' ' catZhida '' 1 ' ' 可逆'' 0 ' 'flag_qc "' 0 ' ' p型'' 1 '現在の曲のページ
        ' N- '' 20 '#の曲の歌のページ番号
        ' W ':シンガー,, #のアーティスト名
        ' g_tk '' 714 057 807 ' " loginUin '' 0 ' ' hostUin '' 0 "' 形式'' JSON ' ' inCharset '' UTF8 ' ' outCharset '' UTF8 ' ' 通知'' 0 ' ' プラットフォーム'' yqq.json ' ' needNewCode '' 0 " 
    } 
    RESRequests.get =(URL、ヘッダー=ヘッダ、paramsは= paramsは)
     IF res.status_code == 200である#1 戻るJSONデータ 
        json_music = res.json()
         IFでlen(json_music [ ' データ' ] [ ' ' ] [ ' 一覧 ])<= 0:
             印刷我々は申し訳ありませんが見つかりていない「{}」相関結果.format(歌手))
         のための音楽 json_music [ データ ] [ ' ] [ ' 一覧' ]:
                曲の名前を 
                タイトル=音楽[ ' タイトル' ] 

                アルバム 
                ALBUM_NAME =音楽[ ' アルバム' ] [ ' 名前' ] 

                長い再生するときに 
                = INT(音楽[インターバル' 間隔" ])
                間隔 = " {} {}分秒" .format(間隔// 60、区間60% )

                再生リンク 
                playurl = 'https://y.qq.com/n/yqq/song/{0}.html ' .format(音楽[ ' MID ' ])

                印刷' ソング名:{}、アルバム:{}、再生時間:{ }、演劇へのリンク:{} ' .format(タイトル、ALBUM_NAME、間隔、playurl))
     印刷' !要求の失敗' 

DEF アゲイン():
     世界のフラグ
    N- =入力(' あなたは(クエリを継続するために入力をしたいのnでください/ N)、プログラムを終了:' IF N- における [ ' N- ' ' N ' ]:
         印刷プログラムは、使用のおかげで停止している! = Falseの

DEF メイン():
     しばらく旗:
        歌手、 = INPUT(?あなたは、単一の歌の歌手を探している人
        getmusiclist(歌手)
        アゲイン()

メイン()

 

 

おすすめ

転載: www.cnblogs.com/KeenLeung/p/12162915.html