说起爬虫,恐怕第一个想到的都是Python,PHP的就少之又少。
得空闲下来,自己用PHP做了一个爬虫,爬取网易云音乐的热门评论。
效果图:
下面简单说一下思路

首先,在网易云官网排行榜内,审查元素,找到热歌榜的url

https://music.163.com/discover/toplist?id=3778678

这里需要注意一下,这个链接直接打开是加了一个’#'号

https://music.163.com/#/discover/toplist?id=3778678

我在爬取的时候发现,url加上这个’#'号的时候会获取不到数据,获取数据时在curl请求时需要加上header头,否则会返回空

// 设置请求头
$headers = array('Host:music.163.com','Refere:http://music.163.com/',// 模拟浏览器设置 User-Agent ,否则取到的数据不完整'User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'
);

然后,在获取到的页面,匹配出列表页的歌曲中的详情页链接/song?id=1345848098和歌名。这里用到了QueryList采集数据(具体用法可以去QueryList的官网了解下),如下:

$rules = array('a' => array('.f-hide>li>a','href'),'text' => array('.f-hide>li>a','text')
);
$data = \QL\QueryList::Query($htmlInfo,$rules);

接着就是在歌曲的详情页获取评论了,这里点击评论发现,用户的是异步请求

其中,请求的链接是R_SO_4_后面拼接的就是歌曲的id,请求需要的两个参数分别为params,encSecKey
下面分析一下这两个参数的由来

发现来源是一个core的js,单击进入这个js文件,如下

点击{},美化js,搜索params,找到了如下方法

看到paramsencSecKey分别是来自bY13xencTextencSecKey,而bY13x是来自一个windows.asrsea方法,这个方法有四个参数。我们需要把这四个参数打印出来,这就用到了fiddler软件,调试线上的js,点击Add Rule,添加线上的js地址,然后在下面选择自己本地的js路径。

打印如下:

输出如下:

多次调试发现,这四个参数只有第一个会改变,而后面三个都是固定不变的。而第一个参数中R_SO_4_XXXXXXXX,后面的是歌曲详情页的id,offset表示从第几条评论开始查,第一页就是0,第二页就是20。total表示是否为第一页,limit表示每一页的查取数量。
有了参数之后,我们再看下这个加密方法,搜索window.asrsea,找到如下方法

中间的console.log是我在本地打印的。
window.asrsea就是d方法,encTextencSecKey就是请求所需的两个参数分别对应paramsencSecKey
encText进行了两次b函数的加密,第一次加密是用的是上面打印的四个参数中的第一和第四个参数,第二次加密是用的第一次加密结果和第四个参数。而b函数就是aes加密,iv偏移量是0102030405060708,模式是cbc。这样就不难生成请求params参数
encSecKey是用三个参数,其中ia方法生成的随机16位字符,我们给i一个固定值,而ef也是固定参数。所以encSecKey抄一个下来就可以用。
最后就可以开始着手写代码了~
我的完整代码在git上,地址:https://github.com/ljhe/GetWangYiYunComments

PHP爬虫爬取网易云音乐热门评论相关推荐

  1. python听歌识曲爬虫_Python爬取网易云音乐热门评论的搜索结果-阿里云开发者社区...

    网易云音乐评论爬虫(三):爬取歌曲的全部评论 用过网易云音乐听歌的朋友都知道,网易云音乐每首歌曲后面都有很多评论,热门歌曲的评论更是接近百万或者是超过百万条.现在我就来分享一下如何爬取网易云音乐歌曲的 ...

  2. 使用爬虫抓取网易云音乐热门评论生成好玩的词云

    互联网爬虫是一个很有意思的技术,借由爬虫,我们可以做到很多好玩的事情--这其中就包括爬取评论. 词云就是个更好玩的技术,通过技术方法分析词语出现频率,生成可视化的图形,将文字内容用图形呈现,想想就很意 ...

  3. request + bs4 爬取网易云音乐热门评论

    """ 获取网易云音乐中的评论 """ import requests from bs4 import BeautifulSoup impo ...

  4. python爬虫-爬取网易云音乐歌曲评论

    本文借鉴了@平胸小仙女的知乎回复 https://www.zhihu.com/question/36081767 以及@lyrichu的博客 https://www.cnblogs.com/lyric ...

  5. python爬虫爬取网易云音乐歌曲_Python网易云音乐爬虫进阶篇

    image.png 年前写过一篇爬网易云音乐评论的文章,爬不了多久又回被封,所以爬下来那么点根本做不了什么分析,后面就再改了下,加入了多线程,一次性爬一个歌手最热门50首歌曲的评论,算是进阶版了- 思 ...

  6. python爬虫网易云音乐评论再分析_爬取网易云音乐的评论后,竟有这种发现!

    原标题:爬取网易云音乐的评论后,竟有这种发现! 作者 | 志颖 责编 | 胡巍巍 用过网易云音乐听歌的朋友都知道,网易云音乐每首歌曲后面都有很多评论,热门歌曲的评论更是接近百万或者是超过百万条. 现在 ...

  7. python网易云_用python爬虫爬取网易云音乐

    标签: 使用python爬虫爬取网易云音乐 需要使用的模块 只需要requests模块和os模块即可 开始工作 先去网易云音乐网页版找一下你想要听的歌曲点击进去.按键盘F12打开网页调试工具,点击Ne ...

  8. python爬虫----爬取网易云音乐

    使用python爬虫爬取网易云音乐 目录 使用python爬虫爬取网易云音乐 需要使用的模块 开始工作 运行结果 需要使用的模块 只需要requests模块和os模块即可 开始工作 先去网易云音乐网页 ...

  9. python网络爬虫网易云音乐下载_python网络爬虫爬取网易云音乐

    #爬取网易云音乐 url="https://music.163.com/discover/toplist" #歌单连接地址 url2 = 'http://music.163.com ...

最新文章

  1. [系统安全] 十.Windows漏洞利用之SMBv3服务远程代码执行漏洞(CVE-2020-0796)及防御详解
  2. 3、AngularJS2 架构
  3. 排除服务器简单系统故障方法,引导CD排除服务器故障方法有哪些?
  4. 苏联当年有多少应该拿菲尔兹奖的数学家被黑了?
  5. Datatables参数详解
  6. 【Flink】ValidationException: Comparison is only supported for numeric types and comparable types
  7. 文件路径存入mysql_网站的文件的上传,并将相对路径保存到数据库的代码实现。...
  8. Android SwipeRefreshLayout 实现下拉刷新1
  9. 页面报错webform_postbackoptions未定义
  10. 起点中文网月票榜爬取及数据分析
  11. 数学建模之层次分析法及其应用
  12. java openoffic linux_Linux openoffice 安装测试
  13. 自定义starter出现Unable to read meta-data for class 这样解决
  14. golang 数组组合成最小的整数_整数数组拼成一个最小或最大的数
  15. 利用SSM(springmvc+spring+mybatis)实现多表联合查询
  16. 闻酥园与宫廷糕点的桃酥对比
  17. AVM环视:一.相机标定及原理
  18. 基于JavaWeb SSM bootStrap 校园二手市场管理系统的设计与实现
  19. 为什么会有BFC?BFC是什么?如何触发?BFC解决了什么问题?
  20. Linux系统vim命令总结

热门文章

  1. 家庭园艺专栏-盆栽时土壤发霉简单处理办法
  2. adb unauthorized 解决方案
  3. SCJP (SUN认证Java程序员)
  4. F - Daxia like uber 【最短路】
  5. 选拔赛 J题 哭泣的阿木木
  6. 哪款软件可以测试网速上行,测试上行速度_怎样在自己电脑上检测网速的上行速率?...
  7. SpringBoot 整合Neo4j
  8. (附源码)计算机毕业设计ssm共享自习室管理系统
  9. Python程序员辞职后,如何踏出自由职业的第一步,聊聊我自己的看法
  10. 软件工程师,不了解64位程序开发你就out了