zoukankan      html  css  js  c++  java
  • 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.cnblogs.com/jackzhuo/
    ♣ 本博客大多为学习笔记或读书笔记,本文如对您有帮助,还请多推荐下此文,如有错误欢迎指正,相互学习,共同进步。

  • 相关阅读:
    google搜索技巧
    sqlite,mysql,access对比
    【转】python技术博客
    2013待阅读书目
    【转】larbin的代码实现逻辑概述
    【转】python遍历文件夹和文件
    【转】正则表达式高级讲解
    Atitit.mybatis的测试  以及spring与mybatis在本项目中的集成配置说明
    Atitit.100% 多个子元素自适应布局属性
    atitti.atiNav 手机导航组件的设计
  • 原文地址:https://www.cnblogs.com/jackzhuo/p/14286681.html
Copyright © 2011-2022 走看看