DrissionPage 是一个基于 Python 的网页自动化工具,结合了 Selenium 和 Requests 的优点,提供了简洁高效的 API,适用于网页数据抓取、自动化操作和测试。
优点:
-
不依赖 WebDriver,无需为不同版本的浏览器下载驱动。
-
运行速度快,支持跨 iframe 查找元素,无需切入切出。
-
可同时操作多个标签页,无需切换。
-
提供方便的数据包监听功能。
使用自动化脚本来采集视频评论数据,主要的便是定位和下拉加载评论信息的方法
这里使用的还是DrissionPage,首先监听评论数据包,等待他加载,然后点击评论按钮显示评论信息,由于评论信息一次加载的数量有限,不会将所有评论一次性加载出来,我们就需要做循环和下拉操作,循环遍历这部分大家看代码就可以知道,都是python的基础语法,主要是下拉操作。
from DrissionPage import ChromiumPage
from pprint import pprint
from datetime import datetime
from time import sleep
import csv
# 导入 csv存储数据到csv文件
f=open('抖音评论数据.csv','w',encoding='utf-8',newline='')
csv_Writer=csv.DictWriter(f,fieldnames=['昵称','地址','评论','日期'])
# 设置表头
csv_Writer.writeheader()
# 写入表头
dp=ChromiumPage()
# 打开谷歌浏览器
dp.listen.start('comment/list/')
# 监听数据包
dp.get("https://www.douyin.com/discover?modal_id=7467513490379509043")
# 访问网站
dp.ele('css:.jp8u3iov').click()
for page in range(1,8):
print(f'正在爬取第{page}页的数据')
res=dp.listen.wait()
json_data=res.response.body
# print(json_data)
comments=json_data['comments']
# 解析数据,提取评论列表
for comment in comments:
# 遍历评论列表
creat_time=comment['create_time']
# 提取时间戳
date=str(datetime.fromtimestamp(creat_time))
# 将时间戳转换为日期时间
try:
ip_label=comment['ip_label']
except:
ip_label='未知'
dit={
'昵称':comment['user']['nickname'],
'地址': comment['ip_label'],
'评论': comment['text'],
'日期': date,
}
csv_Writer.writerow(dit)
print(dit)
sleep(2)
next_page=dp.ele('css:.ETuXBjRi')
# cnqD49jq
# 定位底部元素
dp.scroll.to_see(next_page)
#sliderVideo > div.E7R0E__S.playerContainer.hide-animation-if-not-suport-gpu.TkocvtkE.XxlZGem2 > div.JqsBy4t7.slider-video > div > div.E89RjVdY.IjPhrbh1.immersive-player-switch-on-hide-interaction-area.cG83852M.positionBox > div.I6U7FiE8 > div:nth-child(3) > div > div.jp8u3iov > div > svg > g > g > g > path
下拉操作:我看其他人做的是定位到页面底部的元素,但是我做的时候抖音更新了出来新的ui页面,所以原来的方法就失效了。
解决:当我们手动下拉评论加载的时候会多出一个加载的div,当加载后又会出现到下一部分要加载的数据底部,所以我就直接定位这个div元素就可以实现下拉加载了
这个div我做的时候class是ETuXBjRi这个,当然也许会改变,这需要大家自己再页面中找
数据展示:大家看数据也猜到是哪个的视频评论了-------就是文森特和小海双排的视频
昵称,地址,评论,日期
酸奶不吃鱼,北京,这卢锡安看着有东西的,只是遇到这俩悍匪了[衰],2025-02-05 04:33:03
趣味,广东,请问一下,有谁懂的大哥们,我方已拿下,[战斗先机]这个什么时候出的,2025-02-04 19:30:27
健健康康并且快快乐乐,河北,特哥你远程遥控用崔铁军诈骗是吧[看],2025-02-06 13:58:59
翻斗花园突击手胡爷爷,四川,特哥,能把2月3号晚上20.40的那一把发出来吗,你对线的是霞和露露,对面是我发小,我想看他是怎么被打爆的 [看],2025-02-05 18:29:32
Giligiliai,四川,"卢锡安:对面真是海豹突击队
娜美:我真的困了",2025-02-08 15:10:24
0,浙江,卢锡安:妹子啊,我真的排到特哥了。你听我解释[流泪],2025-02-05 00:18:35