网易新闻评论接口
网易新闻评论内容的采集是比较复杂的,因为全部是js控制 数据传输,新闻页还好,可以直接看到新闻标题和新闻内容,但是评论页的url 以及评论数据,却是无法通过查看源码直接看到的,网易的这个地方用了相当多的js,我也没有精力和实力仔细分析它的js代码,用了1个简单快捷的方法:filldder抓包工具去抓取评论的相关信息:评论url,评论数据url,从而找出评论url的规律,利用源码构成评论数据获取必要的相关信息。
下面是一个具体的采集过程示例:
新闻页:http://news.163.com/12/0301/14/7RH36T1800011229.html
从新闻页可知评论页:http://comment.news.163.com/news ... H36T1800011229.html
从评论页点击评论第2页,抓包抓取到的信息如下图:
打开抓取到的url:http://comment.news.163.com/data ... 6T1800011229_2.html,返回的数据就是评论数据,从而可以大致估计评论数据页url与新闻页url的相同与不同,了解了url格式,那么只要能够构造出评论数据url,那么似乎就能够采集到评论数据了。
评论数据页返回代码(我简化了):
- var replyData={"prcount":0,"ischeck":1,"hotPosts":[热门评论:{ "1":{"f" } ....n个楼层评论(只是1个评论)...}, ...n个格式相同的评论...],"newPosts":[{"最新评论:同热门评论格式],..."tcount":评论数....
复制代码
采集难点有以下几处:
1.评论页数如何确定?
办法:php接口获取评论总数,根据每页评论数30,确定页数,根据评论数据url格式,生成评论分页html,以便火车头识别采集
2.评论数据是josn格式的,而且有时评论是有楼层的,路: ,返回的josn数据路过用火车头直接循环采集评论,那肯定是错误的,因为是1个评论,有时是有楼层的,最高楼层才是此人的评论,这时也是需要接口去处理下这个格式,即提取出每个评论的最高楼层的评论,这样就得到整洁的评论数据了。
针对网易的评论我做了下它的评论接口,测试可以达到预期的效果,适用板块:所有新闻板块
接口测试效果:
现在有一点不确定的是评论数据页url中 /df/ 是否会出现变化,我测试了都可以,路过有变化那么可能会出错或需要修改接口。