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操作数据库之sqlite3打开数据库、删除、修改示例
Mar 13 Python
使用Python的Zato发送AMQP消息的教程
Apr 16 Python
浅谈Python中重载isinstance继承关系的问题
May 04 Python
python 重命名轴索引的方法
Nov 10 Python
对python pandas读取剪贴板内容的方法详解
Jan 24 Python
在Python中合并字典模块ChainMap的隐藏坑【推荐】
Jun 27 Python
介绍一款python类型检查工具pyright(推荐)
Jul 03 Python
python3.7 的新特性详解
Jul 25 Python
Python3 Click模块的使用方法详解
Feb 12 Python
python tqdm 实现滚动条不上下滚动代码(保持一行内滚动)
Feb 19 Python
详细分析Python可变对象和不可变对象
Jul 09 Python
Python 多线程之threading 模块的使用
Apr 14 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学习之PHP表达式
2006/10/09 PHP
php自定义错误处理用法实例
2015/03/20 PHP
php中namespace use用法实例分析
2016/01/22 PHP
PHP常见数组函数用法小结
2016/03/21 PHP
PHP数学运算函数大汇总(经典值得收藏)
2016/04/01 PHP
javascript getElementsByClassName函数
2010/04/01 Javascript
随鼠标移动的时钟非常漂亮遗憾的是只支持IE
2014/08/12 Javascript
jQuery中prev()方法用法实例
2015/01/08 Javascript
Nodejs实战心得之eventproxy模块控制并发
2015/10/27 NodeJs
使用JavaScript为一张图片设置备选路径的方法
2017/01/04 Javascript
Bootstrap学习笔记之进度条、媒体对象实例详解
2017/03/09 Javascript
vuex actions传递多参数的处理方法
2018/09/18 Javascript
JavaScript根据json生成html表格的示例代码
2018/10/24 Javascript
关于vue利用postcss-pxtorem进行移动端适配的问题
2019/11/20 Javascript
React学习之受控组件与数据共享实例分析
2020/01/06 Javascript
vue设置默认首页的操作
2020/08/12 Javascript
python抓取京东商城手机列表url实例代码
2013/12/18 Python
Python实现统计文本文件字数的方法
2017/05/05 Python
python之PyMongo使用总结
2017/05/26 Python
浅谈python新式类和旧式类区别
2019/04/26 Python
Python求两点之间的直线距离(2种实现方法)
2019/07/07 Python
Python类中方法getitem和getattr详解
2019/08/30 Python
Python下利用BeautifulSoup解析HTML的实现
2020/01/17 Python
Python字符编码转码之GBK,UTF8互转
2020/02/09 Python
详解PyQt5中textBrowser显示print语句输出的简单方法
2020/08/07 Python
Python语言编写智力问答小游戏功能
2020/10/13 Python
使用CSS媒体查询(Media Queries)和JavaScript判断浏览器设备类型的方法
2014/04/03 HTML / CSS
HTML5实现视频直播功能思路详解
2017/11/16 HTML / CSS
英国团购网站:Groupon英国
2017/11/28 全球购物
Banana Republic欧盟:美国都市简约风格的代表品牌
2018/05/09 全球购物
P D PAOLA意大利官网:西班牙著名的珠宝首饰品牌
2019/09/24 全球购物
软件测试有哪些?什么是配置项?
2012/02/12 面试题
教师党性分析材料
2014/02/04 职场文书
大学自我评价
2014/02/12 职场文书
委托书范本
2014/04/02 职场文书
股份转让协议书
2014/04/12 职场文书