初步大致思路:个人认为下载器中需要用到爬虫爬取数据的部分是 “搜索” 和 “下载” 这两个环节
一.让我们先来说说“搜索”环节
第一步:打开QQ音乐网页版,在搜索框中随性搜索一波,得到一个搜索列表
第二步:F12 F5 打开开发者工具
发现了一大坨各式各样的文件 个人认为要实现搜索功能必须先找到搜索列表中包含9首歌详细信息的文件所对应的URL
然后就慢慢找啊找啊找啊 然后发现
有个list中存储了每首歌的以下基本信息!!!
对应的是这一个文件 然后我们到headers部分找到他的URL
又臭又长的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格式转换为列表格式的操作
最后 我们通过循环输出列表中我们所需的信息(歌曲名 歌手名 专辑名 歌曲时长。。。(想要啥要啥))
写在最后:搜索功能的代码已经实现 下载功能的思路其实可以说是和搜索功能的一模一样 注意细节很快就能实现了