php 爬取抖音评论数据

1.安装抓包工具(filder)和模拟器(夜神模拟器),可参考博文:https://blog.csdn.net/weixin_42223833/article/details/110009432。安装包和详细配置都有。

注意:抖音有ssl验证,夜神模拟器安装xposed和JustTrustMe之后,才能正常抓包,不然打开抖音是没有网的。

2.破解X-grogon签名算法。因为抖音有签名验证机制,要想直接使用抖音接口,必须破解签名算法!这里有能力的大佬可以通过反编译APP去破解,当然我是没有这个能力的,只能通过抓包工具把数据下载下来。

配置filder下载数据包:

static function OnBeforeResponse(oSession: Session) {        if (m_Hide304s && oSession.responseCode == 304) {            oSession["ui-hide"] = "true";        }        //将关键接口标红        if (oSession.HostnameIs("aweme.snssdk.com")) {            oSession["ui-color"] = "red";        }                //抓取接口的数据        if (oSession.uriContains("https://aweme.snssdk.com/aweme/v2/comment/list/")){            var strBody=oSession.GetResponseBodyAsString();            var sps = oSession.PathAndQuery.slice(-58,);            var host=oSession.PathAndQuery;            var begin=host.indexOf('aweme_id');            var end=host.indexOf('&count=20');            var name=host.Substring(begin,end);                        var date = new Date();            var seperator1 = "-";            var year = date.getFullYear();            var month = date.getMonth()   1;            var strDate = date.getDate();            if (month >= 1 && month <= 9) {                month = "0"   month;            }            if (strDate >= 0 && strDate <= 9) {                strDate = "0"   strDate;            }            var currentdate = year   seperator1   month   seperator1   strDate;            var filetitle=currentdate   '_'   name;                        //FiddlerObject.alert(currentdate);            var filename = "E:/www/phpstudy_pro/WWW/douyin/commend"   "/"   filetitle   ".json";            var curDate = new Date();            var sw : System.IO.StreamWriter;            if (System.IO.File.Exists(filename)){                sw = System.IO.File.AppendText(filename);                sw.Write(strBody);            }            else{                sw = System.IO.File.CreateText(filename);                sw.Write(strBody);            }            sw.Close();            sw.Dispose();        }            }

注意:因为抖音每次只显示20条评论,所以需要通过模拟器的宏操作不断下拉获取下一页数据:

录制一段下拉 的操作,不断执行就好。

3.处理数据

数据已经下载好了,接下来只要处理,提取出自己需要的数据就行了。

这里我使用的是php语言处理数据。

<?php$dir=dirname(__FILE__);$dir=str_replace('\\','/',$dir);$listArr = glob($dir.'/commend/*.json');$arr=[];foreach ($listArr as $k=>$file){    $json=file_get_contents($file);    $data=json_decode($json,true);    //评论    if (!empty($data['comments'])){        $comments=$data['comments'];        foreach ($comments as $id=>$comment){            //评论            $text=$comment['text'];            //评论的用户            $user=$comment['user'];            $nickname=$user['nickname'];//昵称            $signature=$user['signature'];//签名            $avatar=$user['avatar_168x168']['url_list'][1];//头像            $lable=$comment['label_text'];//身份            //评论id            $cid=$comment['cid'];            //评论时间            $createTme=$comment['create_time'];            //视频id            $awemeId=$comment['aweme_id'];            //数据整合            $arr[$cid]=[                'awemeId'=>$awemeId,                'text'=>$text,                'nickname'=>$nickname,                'signature'=>$signature,                'avatar'=>$avatar,                'lable'=>$lable,                'createTme'=>$createTme,            ];        }    }    //评论为空则跳出循环    continue;}echo "<pre>";print_r($arr);echo "</pre>";

来源:https://www.icode9.com/content-1-823651.html

(0)

相关推荐