Tiktok 關鍵字 視頻及評論信息爬蟲(2) [2025.04.07]

🙋?♀?Tiktok APP的基于關鍵字檢索的視頻及評論信息爬蟲共分為兩期,希望對大家有所幫助。
第一期:基于關鍵字檢索的視頻信息爬取
第二期見下文。

1.Node.js環境配置

首先配置 JavaScript 運行環境(如 Node.js),用于執行加密簽名代碼。
Node.js下載網址:https://nodejs.org/en
Node.js的安裝方法(環境配置非常關鍵,決定了后面的程序是否可以使用):https://blog.csdn.net/liufeifeihuawei/article/details/132425239

2. Py環境配置

import random
from tqdm import tqdm
import requests
from urllib.parse import urlparse, urlencode
import warnings
from urllib3.exceptions import InsecureRequestWarning
import time# 忽略 InsecureRequestWarning 警告
warnings.filterwarnings("ignore", category=InsecureRequestWarning)

3. 基于視頻URL的評論信息爬取

在上期中,已經給出了如何獲得指定視頻的URL,下面給出根據URL獲得視頻評論的信息,允許在爬取的過程中對評論進行翻頁

1. 主程序

爬單個URL的評論信息的方法:

if __name__ == '__main__':'''單條數據'''req_url = "https://www.tiktok.com/@resep_debm/video/7475545671383174406"tiktok_comment = TiktokComment()x = tiktok_comment.get_comment_list(req_url)print(x)

爬多個URL的評論信息的方法。通過讀取videosInfo.json文件中保存的URL信息,將最后的結果保存到videos_comments.json文件中:

if __name__ == '__main__':'''多條數據'''data = read_json('../results/videosInfo.json')print(len(data))tiktok_comment = TiktokComment()new_data = data.copy()for i in tqdm(range(len(data))):if 'comments' not in data[i].keys():  #  and i > 1695comments = tiktok_comment.get_comment_list(data[i]['video_url'])if comments != []:new_data[i]['comments'] = commentselse:continueif i % 10 == 0:write_json('../results/videos_comments.json', new_data)# 循環結束后再保存一次,確保所有數據都被寫入write_json('../results/videos_comments.json', new_data)

2. 定義TiktokComments類
允許獲得的評論信息7個字段,包括:
🎰評論ID;
💬評論內容;
🙋評論是否被作者點贊;
😍評論是否熱門;
👍評論的點贊數
👀評論的回復數目
?評論發布的時間;

class TiktokComments:def __init__(self):# self.config = read_config()self.common_utils = CommonUtils()self.cookies = cookie_str_to_dict(read_cookie())# self.proxies = self.config.get("proxies", None)  # 代理配置self.comment_list_headers = {'sec-ch-ua': '"Google Chrome";v="123", "Not:A-Brand";v="8", "Chromium";v="123"','sec-ch-ua-mobile': '?0','User-Agent': self.common_utils.user_agent,'sec-ch-ua-platform': '"Windows"','Accept': '*/*','Sec-Fetch-Site': 'same-origin','Sec-Fetch-Mode': 'cors','Sec-Fetch-Dest': 'empty','Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8',}

通過 cursor_num設置翻頁,count={comment_num}表示希望獲得的評論總數目。

    def get_comment_list(self, video_url, comments_num=100):aweme_id = urlparse(video_url).path.split("/")[-1]ms_token = self.cookies['msToken']req_comments = []max_retries = 3  # 最大重試次數for i in range(comments_num // 20):cursor_num = i * 20comment_num = 20req_url = f"https://www.tiktok.com/api/comment/list/?WebIdLastTime=1715249710&aid=1988&app_language=ja-JP&app_name=tiktok_web&aweme_id={aweme_id}&browser_language=zh-CN&browser_name=Mozilla&browser_online=true&browser_platform=Win32&browser_version=5.0%20%28Windows%20NT%2010.0%3B%20Win64%3B%20x64%29%20AppleWebKit%2F537.36%20%28KHTML%2C%20like%20Gecko%29%20Chrome%2F123.0.0.0%20Safari%2F537.36&channel=tiktok_web&cookie_enabled=true&" \f"count={comment_num}&current_region=JP&cursor={cursor_num}&device_id=7366941338308609569&device_platform=web_pc&enter_from=tiktok_web&focus_state=true&fromWeb=1&from_page=video&history_len=2&is_fullscreen=false&is_non_personalized=false&is_page_visible=true&odinId=7367172442253296673&os=windows&priority_region=&referer=&region=GB&screen_height=1080&screen_width=1920&tz_name=Asia%2FShanghai&webcast_language=zh-Hans&msToken={ms_token}"xbogus = self.common_utils.get_xbogus(req_url, self.common_utils.user_agent)req_url += f'&X-Bogus={xbogus}&_signature=_02B4Z6wo000016M20awAAIDAnp.LMKuZmC-jNtUAAI6L17'for retry in range(max_retries):try:response = requests.request('GET',req_url,headers=self.comment_list_headers,# cookies=self.cookies,verify=False,timeout=random.randint(3, 7),# proxies=self.proxies)if response.status_code != 200:continuereq_json = response.json()comments = req_json.get('comments', [])# print(f"評論數目:{req_json.get('total')}")if not comments:print(f"No comments found for cursor {cursor_num}.")breakfor comment_item in comments:req_comments.append({"cid": comment_item.get('cid'),"comment": comment_item.get('text'),"comments_is_author_like": comment_item.get('is_author_digged'),"comments_is_hot": comment_item.get('is_comment_translatable'),"comments_like": comment_item.get('digg_count'),"comments_reply": comment_item.get('reply_comment_total'),"comments_time": comment_item.get('create_time')})break  # 成功獲取數據,退出重試循環except Exception as e:print(f"Error: {e}. Retrying ({retry + 1}/{max_retries})...")if retry == max_retries - 1:print("Max retries reached. Skipping this request.")return req_comments

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/76063.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/76063.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/76063.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Matlab繪圖—‘‘錯誤使用 plot輸入參數的數目不足‘‘

原因1: ?? 文件列名不是合法變量名 在excel中數據列名稱為Sample:float,將:刪除就解決了

Kotlin問題匯總

Kotlin問題匯總 真機安裝調試 查看真機的Android版本,將build.gradle文件中的minSdk改為手機的Android版本,點Sync Now更新設置 apk安裝失敗 在gradle.properties全局配置中設置android.injected.testOnlyfalse Unresolved reference: 在activity_…

基于VMware的Cent OS Stream 8安裝與配置及遠程連接軟件的介紹

1.VMware Workstation 簡介: VMware Workstation(中文名“威睿工作站”)是一款功能強大的桌面虛擬計算機軟件,提供用戶可在單一的桌面上同時運行不同的操作系統,和進行開發、測試 、部署新的應用程序的最佳解決方案。…

Go語言從零構建SQL數據庫(4)-解析器

SQL解析器:數據庫的"翻譯官"圖解與代碼詳解 圖解SQL解析過程 SQL解析器就像是人類語言與計算機之間的翻譯官,將我們書寫的SQL語句轉換成數據庫能夠理解和執行的結構。 #mermaid-svg-f9gAqHutDLL4McGy {font-family:"trebuchet ms"…

十道海量數據處理面試題與十個方法總結

一、十道海量數據處理面試題 ??1、海量日志數據,提取出某日訪問百度次數最多的那個IP。(分治思想 哈希表) 首先,從日志中提取出所有訪問百度的IP地址,將它們逐個寫入一個大文件中,便于后續處理。 考慮到IP地址是32位的&#…

SolidWorks2025三維計算機輔助設計(3D CAD)軟件超詳細圖文安裝教程(2025最新版保姆級教程)

目錄 前言 一、SolidWorks下載 二、SolidWorks安裝 三、啟動SolidWorks 前言 SolidWorks 是一款由法國達索系統(Dassault Systmes)公司開發的三維計算機輔助設計(3D CAD)軟件,廣泛用于機械設計、工程仿真和產品開…

IntelliJ IDEA 2020~2024 創建SpringBoot項目編輯報錯: 程序包org.springframework.boot不存在

目錄 前奏解決結尾 前奏 哈!今天在處理我的SpringBoot項目時,突然遇到了一些讓人摸不著頭腦的錯誤提示: java: 程序包org.junit不存在 java: 程序包org.junit.runner不存在 java: 程序包org.springframework.boot.test.context不存在 java:…

CPU 壓力測試命令大全

CPU 壓力測試命令大全 以下是 Linux/Unix 系統下常用的 CPU 壓力測試命令和工具,可用于測試 CPU 性能、穩定性和散熱能力。 1. 基本壓力測試命令 1.1 使用 yes 命令 yes > /dev/null & # 啟動一個無限循環進程 yes > /dev/null & # 啟動第二個進…

#SVA語法滴水穿石# (003)關于 sequence 和 property 的區別和聯系

在 SystemVerilog Assertions (SVA) 中,sequence 和 property 是兩個核心概念,它們既有區別又緊密相關。對于初學者,可能不需要過多理解;但是要想寫出復雜精美的斷言,深刻理解兩者十分重要。今天,我們匯總和學習一下該知識點。 1. 區別 特性sequenceproperty定義描述一系…

WordPress浮動廣告插件+飄動效果客服插件

源碼介紹 WordPress浮動廣告插件飄動效果客服插件 將源碼上傳到wordpress的插件根目錄下,解壓,然后后臺啟用即可 截圖 源碼免費獲取 WordPress浮動廣告插件飄動效果客服插件

虛幻基礎:藍圖基礎知識

文章目錄 組件藍圖創建時,優先創建組件,如c一樣。 UI控件控件不會自動創建,而是在藍圖創建函數中手動創建。 函數內使用S序列接退出,并不會等所有執行完再退出,而是一個執行完后直接退出 組件 藍圖創建時,…

《AI大模型應知應會100篇》加餐篇:LlamaIndex 與 LangChain 的無縫集成

加餐篇:LlamaIndex 與 LangChain 的無縫集成 問題背景:在實際應用中,開發者常常需要結合多個框架的優勢。例如,使用 LangChain 管理復雜的業務邏輯鏈,同時利用 LlamaIndex 的高效索引和檢索能力構建知識庫。本文在基于…

深度學習項目--分組卷積與ResNext網絡實驗探究(pytorch復現)

🍨 本文為🔗365天深度學習訓練營 中的學習記錄博客🍖 原作者:K同學啊 前言 ResNext是分組卷積的開始之作,這里本文將學習ResNext網絡;本文復現了ResNext50神經網絡,并用其進行了猴痘病分類實驗…

從代碼學習深度學習 - RNN PyTorch版

文章目錄 前言一、數據預處理二、輔助訓練工具函數三、繪圖工具函數四、模型定義五、模型訓練與預測六、實例化模型并訓練訓練結果可視化總結前言 循環神經網絡(RNN)是深度學習中處理序列數據的重要模型,尤其在自然語言處理和時間序列分析中有著廣泛應用。本篇博客將通過一…

JS DOM節點增刪改查

增加節點 通過document.createNode()函數創建對象 // 創建節點 const div document.createElement(div) // 追加節點 document.body.appendChild(div) 克隆節點 刪除節點

IMX6ULL學習整理篇——Linux使用更現代的GPIO操作簡單設備

IMX6ULL學習篇——實戰:使用設備樹/Pinctl-gpio子系統驅動LED 前言 ? 經過層層考驗,我們即將接近現代的LED驅動的解決方案了。那就是使用最現代的方式開發一個簡單的GPIO驅動外設。 ? 如果您忘記了設備樹的相關內容,請自行到筆者的上一篇…

2025-04-07 NO.3 Quest3 MR 配置

文章目錄 1 MR 介紹1.1 透視1.2 場景理解1.3 空間設置 2 配置 MR 環境2.1 場景配置2.2 MR 配置 3 運行測試 配置環境: Windows 11Unity 6000.0.42f1Meta SDK v74.0.2Quest3 1 MR 介紹 1.1 透視 ? 透視(Passthrough)是將應用的背景從虛擬的…

如何在 GitHub 上開源一個小項目:從創建到長期維護的完整指南

如何在 GitHub 上開源一個小項目:從創建到長期維護的完整指南 適用于 個人開發者、團隊合作、企業開源,涵蓋 Git 基礎、GitHub 配置、最佳實踐、社區互動、自動化 CI/CD 及長期維護策略。 📌 1. 注冊 GitHub 賬戶 如果你還沒有 GitHub 賬戶&…

【技術報告】GPT-4o 原生圖像生成的應用與分析

【技術報告】GPT-4o 原生圖像生成的應用與分析 1. GPT-4o 原生圖像生成簡介1.1 文本渲染能力1.2 多輪對話迭代1.3 指令遵循能力1.4 上下文學習能力1.5 跨模態知識調用1.6 逼真畫質與多元風格1.7 局限性與安全性 2. GPT-4o 技術報告2.1 引言2.2 安全挑戰、評估與緩解措施2.2.1 安…

React中的跨組件通信

在React中,跨組件通信有幾種常見的方式。每種方式適用于不同的場景,下面是幾種常見的跨組件通信方法: 1. 通過父子組件傳遞 Props 父組件可以通過 props 將數據傳遞給子組件,子組件只能接收和使用這些數據。 父組件&#xff08…