利用Django框架和Python爬虫搭建音乐平台

Python爬取酷我音乐网站并利用Django框架进行前端展示

说明:本文是基于python的开发环境下编写爬虫程序,并利用Django框架进行前端页面展示和后端数据管理。

第一步:分析网站数据

在这里插入图片描述百度输入酷我音乐,搜寻酷我音乐官网并打开。

在这里插入图片描述按下F12或者鼠标右击空白处,点击“检查”,打开开发者模式后点击network。在搜索栏输入歌手,例如周杰伦,找到刚刚点击的查找接口searchMusicByKeyWord。

在这里插入图片描述点击接口后可以看到请求的url信息
在这里插入图片描述往下查看有请求头的参数,这里有我们需要的Cookie、Csrf、Referer和User-agent这几个参数值,待会儿我们写爬虫就需要这四个参数。

在这里插入图片描述继续在搜索栏输入一首不收费的歌曲,这里我搜了予君书这首歌,点击播放按钮后找到url?format=mp3接口,点击找到请求的url链接。在这里插入图片描述复制找到的请求url地址,在空网页搜索栏上粘贴,这里就是我们请求成功的接口信息。同样也是要保存这个url地址,待会儿我们写爬虫要用到这个url地址。(可以复制mp3后缀的链接粘贴到空白的网页上,可以直接听歌曲)

第二步:编写爬虫代码

import requests
def get_music_info(search_music):#定义获取音乐列表的方法,写入搜索歌手或者音乐的参数
    #请求头参数,需要我们第一次搜索周杰伦里面的参数值
    headers={
        'User-Agent': 'Mozilla / 5.0(Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36',
        'Referer': 'http://www.kuwo.cn/',
        'Cookie':'Hm_lvt_cdb524f42f0ce19b169a8071123a4797 = 1620477652, 1620525309, 1620547610, 1620657302;_ga=GA1.2.902163124.1620657302; _gid=GA1.2.1326624726.1620657302;Hm_lpvt_cdb524f42f0ce19b169a8071123a4797=1620657402;kw_token=T5VKZUZ7R6H;_gat=1',
        'csrf':'T5VKZUZ7R6H'
    }
#搜索歌手或者音乐的url地址,关键字传入参数
url=f'http://www.kuwo.cn/api/www/search/searchMusicBykeyWord?key={search_music}&pn=1&rn=30&httpsStatus=1&reqId=919ec530-b19f-11eb-9f3d-175828479c94'
#requests请求酷我网站并以json格式返回
response=requests.get(url.format(search_music),headers=headers).json()
#定位返回的json字典里面的data里面的list列表
music_data=response['data']['list']
music_info=[]
 # print(music_data)
    #循环搜索列表里面的每一个rid值并且传入到第二次搜索的免费歌曲的url里面的rid中,同时获取图片pic和名字name值
    for info in music_data:
        music_rid=info['rid']
        music_pic=info['pic']
        music_api=f'http://www.kuwo.cn/url?format=mp3&rid={music_rid}&response=url&type=convert_url3&br=128kmp3&from=web&t=1620657419282&httpsStatus=1&reqId=2d4b3f21-b19d-11eb-9f3d-175828479c94'
        music_play_url=requests.get(music_api,headers=headers).json()['url']
        item={
            'music_pic': music_pic,
            'music_name':info['name'],
            'music_play_url':music_play_url
        }
        #将搜索到的值传入到定义的空列表中展示
        music_info.append(item)
    # print(music_info)
    #返回最终结果
    return music_info

第三步:搭建Django框架

打开cmd命令行,进入一个新建的空白文件夹里面,输入以下命令:
在这里插入图片描述这里忘记进入D盘了,建议输入D:命令进入D盘或者别的盘,不要在系统盘创建!!创建好后打开pycharm导入我们刚刚创建好的Music_Online项目。
在这里插入图片描述
进入Music_Online子模块(在大的下面那个),点击setting注册新创的app
在这里插入图片描述
在主模块Music_Online下新建templates目录,放入我们的index前端页面。(后面展示全模块再上图)
在search目录下新建一个kuwomusic_api模块,导入我们上面写的get_music_info方法。
编写search目录下的views模块

from django.shortcuts import render
from django.views.generic import View
from search.kuwomusic_api import get_music_info
class Index(View):
    #重写http请求方法
    def get(self,request):
        #前端有一个搜索框,定位搜索框‘q’,判断搜索框的值
        if request.GET.get('q') is None:
            return render(request,'index.html')
        #如果有值调用接口并返回搜索的值
        search_music= request.GET.get('q')
        infos = get_music_info(search_music)
        return render(request,'index.html',{'infos':infos})
        #重写post方法,暂时未用上
    def post(self):
        pass

编写Music_Online(子目录)下的urls路径

from django.contrib import admin
from django.urls import path
from search.views import Index
urlpatterns = [
    path('admin/', admin.site.urls),
    path('',Index.as_view())
]

右上角选择Music_Online项目,点击播放按钮运行。
在这里插入图片描述
运行后打开网站如下:
在这里插入图片描述
搜索栏中输入‘苏打绿’,出现代表歌曲、专辑图片和播放链接,点开链接可以直接播放歌曲。
在这里插入图片描述
在python终端中输入命令进行数据迁移同时在网页链接后加入admin可以进入管理员模式:
在这里插入图片描述
在这里插入图片描述

在setting模块更改管理员界面为中文
在这里插入图片描述
本次的音乐爬虫网站搭建完成,因为本人还未学习完Django连接db的课程,日后有需要的会加以补充。第一次写文章还有许多不足之处,欢迎大家讨论一起学习!

  • 1
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值