溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

利用python怎么爬取抖音的評(píng)論數(shù)據(jù)

發(fā)布時(shí)間:2021-01-06 15:28:01 來源:億速云 閱讀:5287 作者:Leah 欄目:開發(fā)技術(shù)

利用python怎么爬取抖音的評(píng)論數(shù)據(jù)?相信很多沒有經(jīng)驗(yàn)的人對(duì)此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個(gè)問題。

安裝需要的工具:

python3 下載
fiddle 安裝及配置
手機(jī)模擬器下載

抖音部分:

模擬器下載好之后, 打開模擬器
在應(yīng)用市場下載抖音

利用python怎么爬取抖音的評(píng)論數(shù)據(jù)

對(duì)抖音進(jìn)行fiddle配置,配置成功后就可以當(dāng)手機(jī)一樣使用了

一、工具配置及抓包:

我們隨便打開一個(gè)視頻之后,fiddle就會(huì)刷新新的數(shù)據(jù)包

利用python怎么爬取抖音的評(píng)論數(shù)據(jù)

在json中找到視頻地址:

利用python怎么爬取抖音的評(píng)論數(shù)據(jù)

二、fiddler中添加下載視頻評(píng)論代碼

在fiddler中添加下載視頻代碼:注意兩點(diǎn):
(1)get后面的路徑要隨時(shí)看進(jìn)行更換
(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:\抖音評(píng)論資料" + "/" + 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怎么爬取抖音的評(píng)論數(shù)據(jù)

三、python執(zhí)行代碼pycharm新建py文件

程序執(zhí)行代碼:

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:\抖音評(píng)論資料'
    self.videos_list = os.listdir('D:\抖音評(píng)論資料')
  def parse(self):
    '鏈接,內(nèi)容,發(fā)布人昵稱,發(fā)布時(shí)間,點(diǎn)贊數(shù),評(píng)論數(shù),分享數(shù)'
    lists = []
    for vid in self.videos_list:
      a = open('D:\抖音評(píng)論資料\{}'.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()

運(yùn)行代碼后在代碼執(zhí)行目錄下會(huì)生成一個(gè)excel

利用python怎么爬取抖音的評(píng)論數(shù)據(jù)

ps:抖音不會(huì)一次性返回整個(gè)評(píng)論數(shù)據(jù)包,每次往下滑動(dòng)評(píng)論區(qū)會(huì)多出26條評(píng)論數(shù)據(jù),我們就可以利用模擬器進(jìn)行滑動(dòng)操作。

點(diǎn)擊 更多>鼠標(biāo)宏

利用python怎么爬取抖音的評(píng)論數(shù)據(jù)

點(diǎn)擊錄屏之后,用鼠標(biāo)往下滑動(dòng)一次頁面

利用python怎么爬取抖音的評(píng)論數(shù)據(jù)

點(diǎn)擊停止,就會(huì)將你剛才的操作保存下來

利用python怎么爬取抖音的評(píng)論數(shù)據(jù)

點(diǎn)擊設(shè)置 可以對(duì)剛才的操作進(jìn)行循環(huán)播放,從而達(dá)到自動(dòng)刷新評(píng)論區(qū)。

利用python怎么爬取抖音的評(píng)論數(shù)據(jù)

看完上述內(nèi)容,你們掌握利用python怎么爬取抖音的評(píng)論數(shù)據(jù)的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI