吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3787|回复: 51
上一主题 下一主题
收起左侧

[Python 原创] DrissionPage自动化爬取某音评论区

  [复制链接]
跳转到指定楼层
楼主
buluo533 发表于 2024-7-22 15:47 回帖奖励
本帖最后由 苏紫方璇 于 2024-7-22 20:49 编辑

DrissionPage是一个非常有实力的python自动化库,利用DrissionPage完成对某音评论区的爬取
略有bug,大佬们可以借鉴使用
主要是利用DrissionPage的接口监听功能去完成,不涉及二级评论。
略有不足,请大佬指正

[Python] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
from DrissionPage import WebPage, ChromiumOptions
from DataRecorder import Recorder
import datetime
import re
 
# 初始化浏览器信息
# path = ''
# co = ChromiumOptions().set_browser_path(path).save()
page = WebPage('d')
# 获取抖音界面
page.get('https://www.douyin.com/')
# 登录
input('登录后回车:')
# 开启监听
page.listen.start('https://www.douyin.com/aweme/v1/web/comment/list/?')
# 设置保存路径
recorder = Recorder('抖音评论.xlsx', cache_size=100)
# 设置编码格式
recorder.set.encoding('utf8')
# 设置保存表头
recorder.set.head(('作者', 'uid', 'ip属地', '内容', '时间'))
# 移动焦点到视频中
page.wait(1)
# 点击屏幕暂停或播放,移动鼠标焦点
page.actions.move_to('css=.xg-video-container video').click()
# 模拟按下H键,尝试移动焦点
page.actions.key_down('H')
# 等待加载定位评论按钮
page.wait.eles_loaded('css=.kT7icnwc div svg')
page.ele('css=.kT7icnwc div svg', timeout=3).click()
# 获取评论区数据信息
text = page.ele('css=div div .qx5s_hbj').text
re_text = int(re.findall(r'全部评论\((.*?)\)', text)[0])
print(f'评论数量:{re_text}')
 
batal = re_text / 20
# 计算余数
remad = re_text % 20
batal = int(batal if remad == 0 else batal + 1)
print(f'预计执行次数:{batal}次')
for i in range(1, batal + 1):
    # 获取评论监听接口信息
    try:
        res = page.listen.wait(timeout=8)
        videes = res.response.body['comments']
 
        # 数据清洗
        for video in videes:
            ip = video['ip_label']
            text = video['text']
            name = video['user']['nickname']
            uid = video['user']['uid']
            time = datetime.datetime.fromtimestamp(video["create_time"])
            # 写入数据
            recorder.add_data((name, uid, ip, text, time))
            recorder.record()
 
        # 设置数据滚动和结束逻辑
        page.wait(0.5)
        page.actions.move_to('css=.comment-mainContent').scroll(5000, 0)
        print(f'------->第{i}次执行完成<-------------')
    except:
 
        print(f'------->第{i}次请求监听超时,自动退出<----------')
        print(f'------->实际获取{i - 1}组数据<----------')
        break




免费评分

参与人数 5吾爱币 +12 热心值 +5 收起 理由
fhlfxtd + 1 + 1 我很赞同!
vicmay + 1 + 1 谢谢@Thanks!
radem3571 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
苏紫方璇 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
不忘形影 + 2 + 1 谢谢@Thanks!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

推荐
 楼主| buluo533 发表于 2024-7-22 20:30 |楼主
youleming 发表于 2024-7-22 18:44
这是拿来干什么呀

某音评论区采集
推荐
 楼主| buluo533 发表于 2024-7-24 20:15 |楼主
p1nk 发表于 2024-7-24 19:28
学习到了,但是使用的时候还是遇到了些问题。比如第一次使用后第二次再运行可能会报错,打开抖音后出现的也 ...

我也遇到这个问题,我当时怀疑是鼠标在网页的焦点导致定位出问题,所以我增加了全屏快捷键h和点击视频中心来调整焦点,可能还需要修改。
想要提取自己需要的视频可以修改page.get()的url参数来直接获取视频,我测试时大部分视频都可以用这个定位,有个别需要重新定位,通用性是有的
如果有好的解决方法也可以告诉我学习一下
3#
liuhaigang12 发表于 2024-7-22 16:14
4#
不忘形影 发表于 2024-7-22 17:16
感谢分析很有用
5#
panghu9670 发表于 2024-7-22 17:31
参考参考
6#
lv3389 发表于 2024-7-22 17:49
有成品吗
7#
nowns 发表于 2024-7-22 18:13
厉害大佬
8#
youleming 发表于 2024-7-22 18:44
这是拿来干什么呀
9#
gmdxga 发表于 2024-7-22 19:12
谢谢,拿走了
10#
 楼主| buluo533 发表于 2024-7-22 20:29 |楼主

有的,我第一次发,不知道咋发成品
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2025-5-20 01:30

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表