吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2208|回复: 50
上一主题 下一主题
收起左侧

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

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

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

[Python] 纯文本查看 复制代码
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, 2024-11-24 07:07

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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