from
DrissionPage
import
WebPage, ChromiumOptions
from
DataRecorder
import
Recorder
import
datetime
import
re
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()
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