这几天一直在想我还没爬取过的网站,以及会遇到的难点。
每天使用网易云听歌,想着选首喜欢的歌去爬爬它的评论,我是用《小宇》这首歌做实例的。
爬虫写的多了,自然也知道在源码里面找不到的数据,基本上都是动态加载出来的,这个时候我一般会打开网页右击检查(我一般使用的都是Google浏览器),选中它的NetWork,上图(不知道为什么粘贴下来的图片这样别扭)。选中XHR(感觉一直用这个还不知道是啥意思,特意去百度了一波,详情链接:
http://www.w3school.com.cn/ajax/ajax_xmlhttprequest_create.asp),然后我是挨个去点击每个请求的,查看它的内容有哪些,评论内容在里面,就是找到这个接口了,这些都是很好找的。
找到接口后,第一反应是复制链接打开看一下(我的Google浏览器有一个查看json文件的扩展程序JSON-handle,复制链接能直接格式化json内容),却是啥都没有,看了一下请求方式,竟然是post请求,对于post请求的解决我还是不够熟练的。我知道会有个form表单需要提交去请求,具体的原理我还没有摸透,还需好好学习进步一波。
往下翻你会看到一个Form Data,它就是我们要提交的表单,但是两个参数params和encSecKey的值会因为刷新页面而改变的,我查了很多大佬的博客,说是采用了 AES,rsa 加密算法,对数据进行了两次 AES 加密等等,所以需要解密,但是渣渣的我还是没能搞明白那个解密的方式,就根据大佬的提示啥的采用了另一种方式解决了评论的爬取。
代码我在下面粘上了,我都写了注释,其中获取精彩评论是使用我知道的最简单的表单提交的方法请求的,获取全部评论是根据链接http://music.163.com/api/v1/resource/comments/R_SO_4_410714325?limit=