最新动态
用Python开发的抖音评论区采集软件,批量爬取评论(含二级)
2024-10-31 23:39

我是@马哥python说,一名10年程序猿。我是软件原创开发者。

用Python开发的抖音评论区采集软件,批量爬取评论(含二级)

采集软件的主要目标是实现笔记数据的自动化采集,包括笔记正文、发布时间、以及转评赞藏等关键信息。通过设计直观的界面,旨在让即使是技术小白也能轻松使用这款工具。

软件界面截图:(软件更新迭代了好几轮,以下是最新v2.1版本截图)

爬取结果截图:(部分爬取到的数据已自动保存到Excel文件)

以上。

演示视频:

软件运行演示过程:https://cloud.tencent.com/developer/video/79961

软件说明:

几点重要说明:

附属说明:v2.2版本已加入评论者uid号!!

爬虫采集模块:

首先,定义接口地址作为请求地址:

代码语言:python
代码运行次数:0
复制
# 请求地址
	url = 'https://www.douyin.com/aweme/v1/web/comment/list/'

定义一个请求头,用于伪造浏览器:

代码语言:python
代码运行次数:0
复制
# 请求头
	h1 = {
	'accept': 'application/json, text/plain, */*',
	'accept-encoding': 'gzip, deflate, br',
	'accept-language': 'zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7',
	'cookie': '换成自己的cookie值',
	'referer': 'https://www.douyin.com/',
	'sec-ch-ua': '"Not_A Brand";v="99", "Google Chrome";v="109", "Chromium";v="109"',
	'sec-ch-ua-mobile': '?0',
	'sec-ch-ua-platform': '"macOS"',
	'sec-fetch-dest': 'empty',
	'sec-fetch-mode': 'cors',
	'sec-fetch-site': 'same-origin',
	'user-agent': ua,
	}

其中,cookie是个关键参数,需要填写到软件界面里。cookie获取方法如下:

加上请求参数,告诉程序你的爬取条件是什么:

代码语言:python
代码运行次数:0
复制
# 请求参数
	params = {
	'device_platform': 'webapp',
	'aid': 6383,
	'channel': 'channel_pc_web',
	'aweme_id': video_id,  # 视频id
	'cursor': page * 20,
	'count': 20,
	'item_type': 0,
	'insert_ids': '',
	'rcFT': '',
	'pc_client_type': 1,
	'version_code': '170400',
	'version_name': '17.4.0',
	'cookie_enabled': 'true',
	'screen_width': 1440,
	'screen_height': 900,
	'browser_language': 'zh-CN',
	'browser_platform': 'MacIntel',
	'browser_name': 'Chrome',
	'browser_version': '109.0.0.0',
	'browser_online': 'true',
	'engine_name': 'Blink',
	'engine_version': '109.0.0.0',
	'os_name': 'Mac OS',
	'os_version': '10.15.7',
	'cpu_core_num': 4,
	'device_memory': 8,
	'platform': 'PC',
	'downlink': 1.5,
	'effective_type': '4g',
	'round_trip_time': 150,
	'webid': 7184233910711879229,
	'msToken': 'LZ3nJ12qCwmFPM1NgmgYAz73RHVG_5ytxc_EMHr_3Mnc9CxfayXlm2kbvRaaisoAdLjRVPdLx5UDrc0snb5UDyQVRdGpd3qHgk64gLh6Tb6lR16WG7VHZQ==',
	}

下面就是发送请求和接收数据:

代码语言:python
代码运行次数:0
复制
# 请求地址
	url = 'https://www.douyin.com/aweme/v1/web/comment/list/'
	# 发送请求
	r = requests.get(url, headers=h1, params=params)
	# 转json格式
	json_data = r.json()

定义一些空列表,用于存放解析后字段数据:

代码语言:python
代码运行次数:0
复制
ip_list = []  # ip属地
	text_list = []  # 评论内容
	create_time_list = []  # 评论时间
	user_name_list = []  # 评论者昵称
	user_url_list = []  # 评论者主页链接
	user_unique_id_list = []  # 评论者抖音号
	like_count_list = []  # 点赞数
	cmt_level_list = []  # 评论级别

循环解析字段数据,以"评论内容"为例:

代码语言:python
代码运行次数:0
复制
# 循环解析
	for comment in comment_list:
	# 评论内容
	text = comment['text']
	text_list.append(text)

其他字段同理,不再赘述。

最后,是把数据保存到csv文件:

代码语言:python
代码运行次数:0
复制
# 保存数据到DF
	df = pd.Dataframe(
	{
	'目标链接': 'https://www.douyin.com/video/' + str(video_id),
	'页码': page,
	'评论者昵称': user_name_list,
	'评论者id': user_unique_id_list,
	'评论者主页链接': user_url_list,
	'评论时间': create_time_list,
	'评论IP属地': ip_list,
	'评论点赞数': like_count_list,
	'评论级别': cmt_level_list,
	'评论内容': text_list,
	}
	)

完整代码中,还含有:判断循环结束条件、时间戳转换、二级评论及二级展开评论的采集等关键实现逻辑,详见文末。

软件界面模块:

软件界面采用tkinter开发。

主窗口部分:

代码语言:python
代码运行次数:0
复制
# 创建日志目录
	work_path = os.getcwd()
	if not os.path.exists(work_path + "/logs"):
	os.makedirs(work_path + "/logs")
	# 创建主窗口
	root = tk.Tk()
	root.title('抖音评论采集软件 | 马哥python说')
	# 设置窗口大小
	root.minsize(width=850, height=650)

填写cookie控件:

代码语言:python
代码运行次数:0
复制
# 【填入cookie】
	tk.Label(root, justify='left', font=('微软', 14), text='个人cookie:').place(x=30, y=75)
	entry_ck = tk.Text(root, bg='#ffffff', width=110, height=2, )
	entry_ck.place(x=30, y=100, anchor='nw')  # 摆放位置

填写视频链接控件:

代码语言:python
代码运行次数:0
复制
# 【视频链接】
	tk.Label(root, justify='left', font=('微软', 14), text='视频链接:').place(x=30, y=145)
	note_ids = tk.StringVar()
	note_ids.set('')
	entry_nt = tk.Text(root, bg='#ffffff', width=110, height=14, )
	entry_nt.place(x=30, y=170, anchor='nw')  # 摆放位置

底部软件版权说明:

代码语言:python
代码运行次数:0
复制
# 版权信息
	copyright = tk.Label(root, text='@马哥python说 All rights reserved.', font=('仿宋', 10), fg='grey')
	copyright.place(x=290, y=625)

以上。

日志模块:

日志文件是记录系统或应用程序运行时发生的事件和活动的文件。这些事件和活动可以是系统错误、警告、信息和调试信息等。同时也方便软件用户追溯运行历史记录。

日志代码:

代码语言:python
代码运行次数:0
复制
def get_logger(self):
	self.logger = logging.getLogger(__name__)
	# 日志格式
	formatter = '[%(asctime)s-%(filename)s][%(funcName)s-%(lineno)d]--%(message)s'
	# 日志级别
	self.logger.setLevel(logging.DEBUG)
	# 控制台日志
	sh = logging.StreamHandler()
	log_formatter = logging.Formatter(formatter, datefmt='%Y-%m-%d %H:%M:%S')
	# info日志文件名
	info_file_name = time.strftime("%Y-%m-%d") + '.log'
	case_dir = r'https://www.360doc.cn/mip/logs/'
	info_handler = TimedRotatingFileHandler(filename=case_dir + info_file_name,
	when='MIDNIGHT',
	interval=1,
	backupCount=7,
	encoding='utf-8')

日志文件截图:

    以上就是本篇文章【用Python开发的抖音评论区采集软件,批量爬取评论(含二级)】的全部内容了,欢迎阅览 ! 文章地址:http://dfvalve.xrbh.cn/quote/5541.html 
     行业      资讯      企业新闻      行情      企业黄页      同类资讯      网站地图      返回首页 迅博思语资讯移动站 http://keant.xrbh.cn/ , 查看更多