爬起qq音乐歌手名字,歌曲信息,播放链接

实现逻辑: 打开chrome浏览器–>F12查看网页源码–>刷新网页查看所要信息是否存于html 中—>是–requests请求和BeautifulSoup分析.否–>找到xhr,刷新页面–>找到相应json请求—>requests请求网站->json提取数据

#实现代码所需模块: requests, csv

代码:

import requests

import csv

#设定初始csv文件

file =open("./qq_music.csv",“w”,newline="",encoding=“utf-8”)

writer =csv.writer(file)

writer.writerow([“歌手名”,“歌曲名”,“播放时长(分钟)”,“播放链接”])

def crawl():

    name =input("请输入你想要查的歌手名")

    #查询歌曲页数
    try:
        page =int(input("请输入想要查询的页数"))

    except Exception as ret:
        print("请输入数字")

    else:
        #查询歌曲数目	
        
        number =input("请输入每页想要查取的数目")

        url ="https://c.y.qq.com/soso/fcgi-bin/client_search_cp"

        headers={

            "user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36"

        }
        for i in range(1,page):

            pararms={

                "ct": "24",
                "qqmusic_ver": "1298",
                "new_json": "1",
                "remoteplace": "txt.yqq.song",
                "searchid": "67814518620895005",
                "t": "0",
                "aggr": "1",
                "cr": "1",
                "catZhida": "1",
                "lossless": "0",
                "flag_qc": "0",
                "p": i,
                "n": number,
                "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,headers=headers,params=pararms)

            items =res.json()

            #定位歌曲信息
            songs =items["data"]["song"]["list"]

            #歌手名
            name =items["data"]["keyword"]

            for song in songs:


                music_name=song["album"]["name"]

                time =int(int(song["interval"])/60)

                play_url =song['url']

                writer.writerow([name,music_name,time,play_url])
        
if __name__ == '__main__':
      crawl()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值