QQ音乐搜索功能基本思路

初步大致思路:个人认为下载器中需要用到爬虫爬取数据的部分是 “搜索” 和 “下载” 这两个环节

一.让我们先来说说“搜索”环节

第一步:打开QQ音乐网页版,在搜索框中随性搜索一波,得到一个搜索列表

第二步:F12 F5 打开开发者工具

发现了一大坨各式各样的文件 个人认为要实现搜索功能必须先找到搜索列表中包含9首歌详细信息的文件所对应的URL

然后就慢慢找啊找啊找啊 然后发现

有个list中存储了每首歌的以下基本信息!!!

对应的是这一个文件 然后我们到headers部分找到他的URL

c.y.qq.com/soso/fcgi-b…

又臭又长的URL(一言难尽...)

但其实,我们可以稍微用点小技巧解析一下这串URL

小技巧1:把参数n的值改变一下(n=10意味着只会返回10首歌的信息)我们把n赋一个很大的值 这样 我们可以得到尽可能多的歌曲信息 是我们的搜索功能更加好

小技巧2:精简URL一个参数一个参数的删除,没有的参数删除后,经测试,打开的内容是不变的

小技巧3:URL其实是使用了 & 隔开每个参数 所以我们以 & 为界隔开各个参数就可以让URL更加易读易懂

到目前为止,我们算是找到了一个搜索列表的URL,但是如果要达到“搜索功能”,就肯定会获取无数个搜索列表,

他们的URL一个个去找明显不可取

所以此时我联想(脑洞而已)到:我们是否可以找到URL中的 变量 与 不变量 然后不变量用一种匹配模式去匹配

于是乎我们就得到:由 不变量 和 关于变量的匹配模式组成的一个 “通用的URL”

当我们输入关键词时,通过与这个“通用的URL”匹配便可得到对应的搜索列表

下面我将通过搜索不同的关键词 去寻找URL中的 不变量 与 变量(此处省略步骤的展示)

比较之后,我发现了不同的参数是: w

w=%E8%96%9B%E4%B9%8B%E8%B0%A6&g_tk=1315617814(“薛之谦”)

w=%E5%91%A8%E6%9D%B0%E4%BC%A6&g_tk=1321333438(“周杰伦”)

这里我是通过正则表达式去匹配的

匹配后就是常规的 读取URL---》得到返回体--》解析返回体中的数据

分析数据的时候涉及了一个:json格式转换为列表格式的操作

最后 我们通过循环输出列表中我们所需的信息(歌曲名 歌手名 专辑名 歌曲时长。。。(想要啥要啥))

写在最后:搜索功能的代码已经实现 下载功能的思路其实可以说是和搜索功能的一模一样 注意细节很快就能实现了

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值