本文仅供学习交流使用,如侵立删!联系方式及demo下载见文末 |
抖音网页版获取指定视频评论数据
模块
- Python:3.9.2
- requests:2.25.1
- execjs:1.5.1
根据视频ID 获取视频总评论数
def get_total(self, method, aweme_id=None, cursor=None):
"""
根据视频ID 获取视频总评论数
method:评论接口 cooment
aweme_id:视频id
cursor:页数
"""
self.log.info('获取视频评论数量')
# 读取本地js文件
with open('_signature.js', 'r', encoding='utf-8') as f:
f = f.read()
# 编译并加载js文件内容:execjs.compile() 返回的是一个对象
e = execjs.compile(f)
# call():调用js中的方法
url = e.call(method, aweme_id, cursor*20)
response = self._parse_url(url=url)
if not response:
self.log.info('数据获取失败!')
exit()
total = response.json().get('total')
# 根据总数量计算页数,一页20条数据
total_page = int(int(total) / 20)
self.log.info(f'视频id:{aweme_id} 评论数:{total} 共:{total_page}页数据')
return total_page
根据视频ID 获取视频评论信息
def get_comment(self, method, aweme_id=None, cursor=None):
"""
根据视频ID 获取视频评论信息
method:评论接口 cooment
aweme_id:视频id
cursor:页数
"""
# 读取本地js文件
with open('_signature.js', 'r', encoding='utf-8') as f:
b = f.read()
# 编译并加载js文件内容:execjs.compile() 返回的是一个对象
c = execjs.compile(b)
# 调用js中的方法:call()
d = c.call(method, aweme_id, cursor*20)
response = self._parse_url(url=d)
print(response.text)
if not response:
self.log.info('数据获取失败!')
exit()
# 解析aweme_id和userid,拼接保存文件名
result = response.json()
comments = result.get('comments')
for comment in comments:
aweme_id = comment.get('aweme_id')
user_id = comment.get('user').get('uid')
filename = f'{aweme_id}-{user_id}'
yield filename, comment
数据保存
def save_json(self, filename, data):
"""
保存数据 为json
"""
filename = self.path + os.sep + filename + '.json'
with open(filename, 'w', encoding='utf-8') as f:
f.write(json.dumps(data, ensure_ascii=True))
本文仅供学习交流使用,如侵立删! 企鹅 、WX: 1033383881 |