• 爬取QQ音乐(讲解爬虫思路)


    一、问题描述:

    本次爬取的对象是QQmusic,为自己后面做django音乐网站的开发获取一些资源。

     

    二、问题分析:

    由于QQmusic和网易音乐的方式差不多,都是讲歌曲信息放入到播放界面播放,在其他界面没有media的资源,喜马拉雅的则不是这样的,可以参考我爬取喜马拉雅的blog与代码:https://www.cnblogs.com/future-dream/p/10347354.html

    1.由于上述原因,我们需要对网页进行分析:

    获取歌曲菜单的id——>歌曲的所有id信息——>播放网站URL的构建,我们所有的一切都是为播放网站参数需要而努力,得到了对应的参数剩下的就很简单。

    (1)歌曲菜单界面

     

    (2)歌曲id信息

     

    (3)播放网站的解析

     

    三、实施步骤:

    爬虫基本的思路都是倒序根据需要的信息一步一步往上推

    1.播放界面的请求参数

    (1)一个播放界面

     

    (2)另一个播放界面

    通过观察我们可以看到,只有vkey参数不一样,而我们的目的也是得到这个vkey参数,这样可以完成对歌曲内容的获取。

     

    2.查看vkey所在的文件

    (1)由于我们是在播放界面点出来的因此需要回到播放界面去查找信息,可以通过对id进行查询,可以看到如图灰色的响应,包含了所有关于歌曲信息的url信息。

     

    (2)查看参数可以知道我们需要的参数,注意:第一个参数是可有可无的,因此就省去这个参数。

     

    (3)对比参数,查看变量参数,可以看到只有songmid不一样因此在解析的时候只需要songmid需要改变。

     

    3.获取songmid

    (1)我们根据响应可以知道我们是通过歌单的信息获取歌曲的列表,在通过歌曲的列表获取歌曲的songmid。

     

    (2)通过获取的song_list获取到songmid

     

    (3)查看请求头的信息,观察变化的参数

    1.一个请求头的信息

     

    2.另一个请求头的信息

    通过请求头都分析我们只需要改变disstid的参数就可以获取到所有的歌曲信息。

     

    4.获取disstid的信息

    (1)首先查看disstid在那个文件中

     

    (2)查看请求头,其中rnd的信息可以不要为空就可以了。

     

    (3)获取disstid

     通过倒推的方法,可以成功解析歌曲的信息,剩下的就是代码实现。

     

    四、成果展示与总结:

    1.展示

    2.总结

    一步步分析,在解析vkey的时候第一个很奇怪的参数就可以省略,在进行爬虫爬取的时候也要注意这些问题,有时候的参数是可以省略的,因此在构造请求信息的时候就可以省略

    参数的信息,由于QQmusic采取的都是json格式的文件,所以在解析的时候比较简单,也很快速,这也是结构化数据的信息的特点。

    五、源码:

    https://github.com/pzq7025/Spider

  • 相关阅读:
    java修改应用程序标题栏
    电动双轮车
    Oracle执行计划相关(待补充)
    SQL中IN和EXISTS用法的区别
    union all与union all
    equals与hashcode
    文件上传的整个流程
    adwords与adsence
    struts2文件上传大小
    为什么是UUID做主键
  • 原文地址:https://www.cnblogs.com/future-dream/p/10591287.html
Copyright © 2020-2023  润新知