QQ音乐搜索功能基本思路

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

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

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

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

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

而后就慢慢找啊找啊找啊 而后发现工具

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

对应的是这一个文件 而后咱们到headers部分找到他的URLorm

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

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

但其实,咱们能够稍微用点小技巧解析一下这串URL开发

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

小技巧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格式转换为列表格式的操做

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

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

相关文章
相关标签/搜索