YORKクラウド歌詞をクロール30行

要求分析:次のようにクローラが歌の網易クラウド音楽の歌詞を取得し使用して、効果は次のとおりです。

image.png

分析:アクセス:よう、APIによる公式歌詞の歌詞を取得https://music.163.com/#/song?id=1417093533は次のようにインターフェースがあり、曲の詳細ページ程度にジャンプします

image.png

あなたは、コール・インタフェースの歌詞を取得する必要があります

リンク:http://music.163.com/api/song/media?id=注:idは曲のIDが続きます

以下のような:1417093533:曲のIDがある曲のゴジラの歌詞の上にGET

image.png

私たちは、Webサイトがされて訪問し、入ってくる歌詞への鍵のインタフェースとして、数字のこの文字列を参照してくださいhttp://music.163.com/api/song/media?id=1417093533以下の内容を表示します

image.png

我々は慎重に、サイトの構造を見て、実際には、それはJSON形式のデータ(Pythonの辞書として理解することができる)、詳細は次のとおりです。
  1. 「SongStatus」:1#これは国家の歌を表現しなければなりません
  2. 「LyricVersion」:222#この歌詞のバージョンを示す必要があります
  3. 「歌詞」:#このコンテンツは、歌詞の一部含まれています
  4. 「コード」:200#このステータスコードを検索歌詞
私たちは、「歌詞」の部分を取得する必要がありますので、缶(ない純粋な音楽の歌詞、無視することができます!)
準備:

ピップとリクエスト・ライブラリをインストールします(あなたがBaiduのを見てすることはできません)

コード:
import requests
def requests_html(url):
    # 我们增加一个headers,如果不加,网易云会认为我们是爬虫程序,从而拒绝我们的请求
    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 QIHU 360SE',
    }
    # 利用requests模块请求网易云的歌词页面
    demo = requests.get(url, headers=headers)
    # 如果正确获取到网页则返回文本内容
    if demo.status_code == 200:
        return  demo.text
    else:
        print(url,"请求失败")
def parser_html(txt):
    # 这里我就不异常处理了,直接获取内容,eval函数把文本内容转换为字典
    dic = eval(text)
    print("文本当前的数据类型是:",type(dic))
    # 字典是键值对类型的,获取歌词部分
    lyric = dic['lyric']
    # 通过观察文本内容发现,文本每行以 '\n'字符结束,用文本的split切割\n字符获取每行的歌词内容
    for line in lyric.split('\n'):
        print(line)
# url中的信息就是歌词链接,可以试试你自己的链接,更改ID即可
url = 'http://music.163.com/api/song/media?id=1417093533'
# text里就是网页的内容了
text = requests_html(url)
# 把text里的内容交给parser_html函数解析
parser_html(text)
疑問がある場合は私のコードは、詳細に私がコメントを持っている重要な部分を説明していない、お互いから学び、交流を歓迎し、メッセージを残してください!

おすすめ

転載: www.cnblogs.com/Coder-Photographer/p/12583773.html