qq音乐——获取歌曲图片和名称

效果展示:

在这里插入图片描述

wxml代码:

<!--music/pages/music/music.wxml-->
<view class="container">
    <view class="listTitle">最新音乐</view>
    <view class="list">
        <view class="item" wx:for="{{songlist}}">
            <view class="number">{{item.cur_count}}</view>
            <view class="leftImg">
                <image src="{{item.data.image}}" mode="aspectFill"></image>
            </view>
            <view class="rightBox">
                <view class="songName">{{item.data.songname}}</view>
                <view class="singer">{{item.data.singer[0].name}}</view>
            </view>
            <view class="playBtn" bindtap="audioPlay" data-key="{{index}}">
            </view>
        </view>
    </view>
</view>

js代码:

// music/pages/music/music.js
Page({

    /**
     * 页面的初始数据
     */
    data: {
        // 音乐列表
        songlist: []
    },
    /**
     * 生命周期函数--监听页面加载
     */
    onLoad(options) {
        this.getMusic()
    },
    getMusic() {
        wx.request({
            url: 'https://c.y.qq.com/v8/fcg-bin/fcg_v8_toplist_cp.fcg?g_tk=5381&uin=0&format=json&inCharset=utf-8&outCharset=utf-8&notice=0&platform=h5&needNewCode=1&tpl=3&page=detail&type=top&topid=36&_=1520777874472',
            data: {},
            header: {
                'content-type': 'application/json'
            },
            success: (res) => {
                console.log(res.data.songlist);
                let songlist = res.data.songlist
                // 生成图片地址
                songlist.forEach((item) => {
                    item.data.image = `http://imgcache.qq.com/music/photo/album_300/${item.data.albumid%100}/300_albumpic_${item.data.albumid}_0.jpg`
                })
                // 生成歌曲地址
                songlist.forEach((item) => {
                    item.data.audioUrl = `https://c.y.qq.com/v8/fcg-bin/fcg_play_single_song.fcg?songid=${item.data.songid}&tpl=yqq_song_detail&format=jsonp&callback=getOneSongInfoCallback`
                })
                this.setData({
                    songlist: songlist
                })
                
            }
        })
    },
    audioPlay(e) {
        // 下标
        console.log(e.currentTarget.dataset.key);
    },
})
### 如何使用 Python 爬取 QQ 音乐歌曲数据 要实现对 QQ 音乐歌曲数据的爬取,可以按照以下方法操作: #### 数据请求分析 QQ 音乐通常会通过 XHR 请求返回 JSON 格式的响应数据。这些数据包含了歌曲的相关信息,例如歌名、专辑名称以及播放链接等[^5]。 #### 使用 Requests 库发送 HTTP 请求 可以通过 `requests` 库向目标 URL 发送 GET 或 POST 请求来获取所需的数据。以下是基本代码示例: ```python import requests url = 'https://c.y.qq.com/splcloud/fcgi-bin/fcg_get_diss_by_tag.fcg' # 假设这是接口地址 headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36' } params = {'g_tk_new_20200303': '5381', 'g_tk': '5381', 'loginUin': '0', 'hostUin': '0', 'format': 'json'} response = requests.get(url, headers=headers, params=params) if response.status_code == 200: data = response.json() else: print(f"Request failed with status code {response.status_code}") ``` 上述代码中定义了一个简单的 GET 请求,并设置了必要的参数头部信息以便成功访问 API 接口[^1]。 #### 解析 JSON 数据 一旦接收到服务器返回的内容,则需将其解析为易于处理的形式——通常是字典或者列表结构。下面展示如何提取特定字段的信息: ```python for item in data['data']['list']: song_name = item['dissname'] singer_name = ', '.join([singer['name'] for singer in item['creator']]) print(f"{song_name} by {singer_name}") ``` 这里假设每首歌都有对应的歌手名字数组;如果实际情况有所不同,请调整相应逻辑以适配实际返回的结果集。 #### 存储到数据库 为了长期保存所获得的数据,可考虑利用 MySQL 这样的关系型数据库管理系统来进行管理。连接至本地安装好的 MySQL 实例并将记录插入表中的例子如下所示: ```sql CREATE TABLE IF NOT EXISTS qq_music ( id INT AUTO_INCREMENT PRIMARY KEY, title VARCHAR(255), artist VARCHAR(255) ); ``` 接着,在 Python 脚本里加入这段用于建立与数据库之间联系的部分: ```python import pymysql.cursors connection = pymysql.connect(host='localhost', user='root', password='password', database='test_db', cursorclass=pymysql.cursors.DictCursor) try: with connection.cursor() as cursor: sql = "INSERT INTO `qq_music` (`title`, `artist`) VALUES (%s, %s)" cursor.execute(sql, (song_name, singer_name)) finally: connection.close() ``` 此部分展示了怎样安全地执行 SQL 插入语句而不会泄露敏感凭据[^4]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值