python实现模拟器爬取抖音评论数据的示例代码


Posted in Python onJanuary 06, 2021

目标:

由于之前和朋友聊到抖音评论的爬虫,demo做出来之后一直没整理,最近时间充裕后,在这里做个笔记。
提示:大体思路 通过fiddle + app模拟器进行抖音抓包,使用python进行数据整理

安装需要的工具:

抖音部分:

模拟器下载好之后, 打开模拟器
在应用市场下载抖音

python实现模拟器爬取抖音评论数据的示例代码

对抖音进行fiddle配置,配置成功后就可以当手机一样使用了

一、工具配置及抓包:

我们随便打开一个视频之后,fiddle就会刷新新的数据包

python实现模拟器爬取抖音评论数据的示例代码

在json中找到视频地址:

python实现模拟器爬取抖音评论数据的示例代码

二、fiddler中添加下载视频评论代码

在fiddler中添加下载视频代码:注意两点:
(1)get后面的路径要随时看进行更换
(2)下载的路径要在fiddler下面自己新建

if (m_Hide304s && oSession.responseCode == 304) {
      oSession["ui-hide"] = "true";
    }
    
    if (oSession.uriContains("https://aweme.snssdk.com/aweme/v1/general/search/single/")){
      var strBody=oSession.GetResponseBodyAsString();
      var sps = oSession.PathAndQuery.slice(-58,);
      //FiddlerObject.alert(sps)
      var timestamp=new Date().getTime();
      var filename = "D:\抖音评论资料" + "/" + sps + timestamp + ".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();

此段代码放到fiddler中的script的response中,如下图:添加好之后别忘记保存!!

python实现模拟器爬取抖音评论数据的示例代码

三、python执行代码pycharm新建py文件

程序执行代码:

import os
import json
import time
import requests
import re
import csv

class Douyin(object):

  def __init__(self):
    pass
    self.url1 = 'https://aweme.snssdk.com/aweme/v2/comment/list/?aweme_id=6885929189950737676&cursor=0&count=20&address_book_access=1&gps_access=1&forward_page_type=1&channel_id=0&city=310000&hotsoon_filtered_count=0&hotsoon_has_more=0&follower_count=0&is_familiar=0&page_source=0&os_api=25&device_type=VOG-AL00&ssmix=a&manifest_version_code=110301&dpi=240&uuid=868594157367551&app_name=aweme&version_name=11.3.0&ts=1603350069&cpu_support64=false&app_type=normal&ac=wifi&host_abi=armeabi-v7a&channel=aweGW&update_version_code=11309900&_rticket=1603350070959&device_platform=android&iid=1758845207590062&version_code=110300&mac_address=b0%3Ac4%3A2d%3Ad0%3Aed%3A38&cdid=7974198e-c4c0-49c2-bfaa-43686052706e&openudid=d0c6cffa7067bedd&device_id=844047245117672&resolution=720*1280&device_brand=HUAWEI&language=zh&os_version=7.1.2&aid=1128&mcc_mnc=46000'
    self.url2 = 'https://aweme.snssdk.com/aweme/v2/comment/list/?aweme_id=6885163969477086479&cursor=0&count=20'
    self.header = {
      'Accept-Encoding': 'gzip',
      'X-SS-REQ-TICKET': '1603350070957',
      'sdk-version': '1',
      'Cookie': 'install_id=1758845207590062; ttreq=1$34f012b99d70a66f681dc3d1f0b438fc1b161af3; d_ticket=77247c94236bf8055c233f8cabb6a5ddf3231; odin_tt=fccb20add45a15f08a2519eadcaaf22cba4b3f8f1fceec300a088407c2daf81ea76b260ef6c81dbc86dfedfea011f68c25238f9b3984fe4f5909441dfd1cc9c2; sid_guard=6de18a966e69dcbbf076f629a2ef6511%7C1603345424%7C5184000%7CMon%2C+21-Dec-2020+05%3A43%3A44+GMT; uid_tt=ba98af780b4e337f01463cf98a8afafd; sid_tt=6de18a966e69dcbbf076f629a2ef6511; sessionid=6de18a966e69dcbbf076f629a2ef6511',
      'x-tt-token': '006de18a966e69dcbbf076f629a2ef651189d3f6f73fd3d6319b543d50d2e2e5a4cf3e383f8da81f07e049bcf850de07d331',
      'X-Gorgon': '0404d8210000a6a3dca0dbc6b11483a82420c9a94dd050a3e511',
      'X-Khronos': '1603350070',
      'Host': 'aweme.nssdk.com',
      'Connection': 'Keep-Alive',
      'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.75 Safari/537.36',
    }
    self.add = 'D:\抖音评论资料'
    self.videos_list = os.listdir('D:\抖音评论资料')
  def parse(self):
    '链接,内容,发布人昵称,发布时间,点赞数,评论数,分享数'
    lists = []
    for vid in self.videos_list:
      a = open('D:\抖音评论资料\{}'.format(vid),encoding='utf-8')
      content = json.load(a)
      for con in content['data']:
        meta = {}
        try:
          meta['title'] = con['aweme_info']['desc']
          meta['author_name'] = con['aweme_info']['author']['nickname']
          meta['u_name'] = con['aweme_info']['author']['unique_id']
          meta['create_time'] = con['aweme_info']['create_time']
          timeArray = time.localtime(meta['create_time'])
          meta['create_time'] = time.strftime("%Y--%m--%d %H:%M:%S", timeArray)
          meta['digg_count'] = con['aweme_info']['statistics']['digg_count']
          meta['comment_count'] = con['aweme_info']['statistics']['comment_count']
          meta['share_count'] = con['aweme_info']['statistics']['share_count']
          meta['share_url'] = con['aweme_info']['share_url']
        except:
          meta['title'] = ''
          meta['author_name'] = ''
          meta['u_name'] = ''
          meta['create_time'] = ''
          meta['digg_count'] = ''
          meta['comment_count'] = ''
          meta['share_count'] = ''
          meta['share_url'] = ''

        if meta['u_name'] == '':
          try:
            meta['u_name'] = con['aweme_info']['music']['owner_handle']
          except:
            meta['u_name'] = ''
        if meta['title'] == '':
          pass
        else:
          lists.append(meta)
          # print(meta)
    return lists

  def save_data(self, meta):
    header = ['share_url', 'title', 'author_name', 'u_name', 'create_time', 'digg_count', 'comment_count', 'share_count']
    print(meta)
    with open('test.csv', 'a', newline='', encoding='utf-8-sig') as f:
      writer = csv.DictWriter(f, fieldnames=header)
      writer.writeheader() # 写入列名
      writer.writerows(meta)

  def run(self):
    meta = self.parse()
    self.save_data(meta)

if __name__ == '__main__':
  douyin = Douyin()
  douyin.run()

运行代码后在代码执行目录下会生成一个excel

python实现模拟器爬取抖音评论数据的示例代码

ps:抖音不会一次性返回整个评论数据包,每次往下滑动评论区会多出26条评论数据,我们就可以利用模拟器进行滑动操作。

点击 更多>鼠标宏

python实现模拟器爬取抖音评论数据的示例代码

点击录屏之后,用鼠标往下滑动一次页面

python实现模拟器爬取抖音评论数据的示例代码

点击停止,就会将你刚才的操作保存下来

python实现模拟器爬取抖音评论数据的示例代码

点击设置 可以对刚才的操作进行循环播放,从而达到自动刷新评论区。

python实现模拟器爬取抖音评论数据的示例代码

到此这篇关于python实现模拟器爬取抖音评论数据的示例代码的文章就介绍到这了,更多相关python 拟器爬取数据内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python数据类型详解(二)列表
May 08 Python
Python基础篇之初识Python必看攻略
Jun 23 Python
Python基础学习之常见的内建函数整理
Sep 06 Python
python3写爬取B站视频弹幕功能
Dec 22 Python
Odoo中如何生成唯一不重复的序列号详解
Feb 10 Python
Python cookbook(数据结构与算法)根据字段将记录分组操作示例
Mar 19 Python
使用Django简单编写一个XSS平台的方法步骤
Mar 25 Python
python中pip的使用和修改下载源的方法
Jul 08 Python
Python3常用内置方法代码实例
Nov 18 Python
Pytorch转onnx、torchscript方式
May 25 Python
详解torch.Tensor的4种乘法
Sep 03 Python
python实现定时发送邮件
Dec 23 Python
如何在vscode中安装python库的方法步骤
Jan 06 #Python
如何利用python 读取配置文件
Jan 06 #Python
Pandas之缺失数据的实现
Jan 06 #Python
matplotlib绘制鼠标的十字光标的实现(内置方式)
Jan 06 #Python
java字符串格式化输出实例讲解
Jan 06 #Python
matplotlib 画动态图以及plt.ion()和plt.ioff()的使用详解
Jan 05 #Python
查找适用于matplotlib的中文字体名称与实际文件名对应关系的方法
Jan 05 #Python
You might like
PHP面向对象之领域模型+数据映射器实例(分析)
2017/06/21 PHP
使用YII2框架实现微信公众号中表单提交功能
2017/09/04 PHP
JavaScript prototype属性使用说明
2010/05/13 Javascript
javascript事件函数中获得事件源的两种不错方法
2014/03/17 Javascript
详解addEventListener的三个参数之useCapture
2015/03/16 Javascript
深入浅出分析javaScript中this用法
2015/05/09 Javascript
纯js模拟div层弹性运动的方法
2015/07/27 Javascript
js两种拼接字符串的简单方法(必看)
2016/09/02 Javascript
基于jQuery实现的幻灯图片切换
2016/12/02 Javascript
原生js实现水平方向无缝滚动
2017/01/10 Javascript
JS实现京东首页之页面顶部、Logo和搜索框功能
2017/01/12 Javascript
谈谈JS中的!!
2017/12/07 Javascript
JavaScript实现二叉树定义、遍历及查找的方法详解
2017/12/20 Javascript
vue后台管理之动态加载路由的方法
2018/08/13 Javascript
详解如何用webpack4从零开始构建react开发环境
2019/01/27 Javascript
详解vue 2.6 中 slot 的新用法
2019/07/09 Javascript
微信小程序webSocket的使用方法
2020/02/20 Javascript
python实现简单socket通信的方法
2016/04/19 Python
Python实现基本数据结构中栈的操作示例
2017/12/04 Python
利用 python 对目录下的文件进行过滤删除
2017/12/27 Python
10分钟教你用Python实现微信自动回复功能
2018/11/28 Python
Tensorflow实现多GPU并行方式
2020/02/03 Python
python实现UDP协议下的文件传输
2020/03/20 Python
浅析HTML5中的 History 模式
2017/06/22 HTML / CSS
iframe在移动端的缩放的示例代码
2018/10/12 HTML / CSS
里程积分管理买卖交换平台:Points.com
2017/01/13 全球购物
viagogo法国票务平台:演唱会、体育比赛、戏剧门票
2017/03/27 全球购物
联想英国官网:Lenovo英国
2019/07/17 全球购物
Linux面试题LINUX系统类
2015/11/25 面试题
介绍一下Ruby中的对象,属性和方法
2012/07/11 面试题
房产公证书范本
2014/04/10 职场文书
基层党支部公开承诺书
2014/05/29 职场文书
学校学雷锋活动总结
2014/06/26 职场文书
教你用python控制安卓手机
2021/05/13 Python
Python turtle编写简单的球类小游戏
2022/03/31 Python
阿里云 Windows server 2019 配置FTP
2022/04/28 Servers