当前位置:   article > 正文

Python爬取 "抖音" App短视频信息_parse_video_info['达人short_id'] = video_info['autho

parse_video_info['达人short_id'] = video_info['author']['short_id']

1. Charles获取视频接口

 爬取之前先将手机与PC至于同局域网并确保手机WIFI的代理端口为8888,然后打开Charles获取视频请求的链接,如图:

video_url

2. 手动上滑触发视频请求接口

  自动化滑动刷新有尝试过,但是由于技术有限,不能实现抖音APP的登录,所以用Charles只能获取视频下载链接,而不能获取其他有效信息,比如视频的名称、作者名称、获赞数、转发量等。

3. Python脚本获取视频信息

  使用Python脚本拦截response爬取视频信息并下载视频,同时将视频信息存储至JSON。

4. 视频无水印

  如图:

  1. from mitmproxy import ctx
  2. import json
  3. import requests
  4. import time
  5. import os
  6. '''
  7. 想要学习Python?Python学习交流群:984632579满足你的需求,资料都已经上传群文件,可以自行下载!
  8. '''
  9. def response(flow):
  10. """
  11. 抓取抖音标题、APP视频链接、作者、抖音ID、发布时间、获赞数、评论和转发数等信息, 并将结果保存为JSON格式.
  12. :return: None
  13. """
  14. # 通过Charles获取的抖音视频信息的URL接口
  15. url = 'https://api.amemv.com/'
  16. if flow.request.url.startswith(url):
  17. # 获取服务器返回的响应
  18. text = flow.response.text
  19. # 转化为Json格式
  20. dyjson = json.loads(text)
  21. info = ctx.log.info
  22. # 获取视频列表
  23. aweme_list = dyjson.get('aweme_list')
  24. # 遍历列表,获取每个视频的相应数据
  25. for i in range(len(aweme_list)):
  26. # 视频标题
  27. title = aweme_list[i].get('share_info').get('share_title')
  28. # 视频链接
  29. videourl = aweme_list[i].get('video').get('play_addr').get('url_list')[0]
  30. # 保存视频
  31. res = requests.get(videourl, stream=True)
  32. # 规范文件命名
  33. _str = ['\\', '/', ':', '*', '?', '"', '<', '>', '|', '.', '..', '?']
  34. for _ in _str:
  35. if _ in title:
  36. title.replace(_, '')
  37. # 判断文件路径是否存在
  38. save_dir = './video/'
  39. if not os.path.exists(save_dir):
  40. os.mkdir(save_dir)
  41. with open('{}/{}.mp4'.format(save_dir, title), 'wb') as f:
  42. f.write(res.content)
  43. # 作者名称
  44. nickname = aweme_list[i].get('author').get('nickname')
  45. # 抖音ID
  46. short_id = aweme_list[i].get('author').get('short_id')
  47. # 发布时间
  48. create_time = aweme_list[i].get('create_time')
  49. # 格式化
  50. create_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(create_time))
  51. # 获赞、评论、转发数
  52. digg_count = aweme_list[i].get('statistics').get('digg_count')
  53. comment_count = aweme_list[i].get('statistics').get('comment_count')
  54. share_count = aweme_list[i].get('statistics').get('share_count')
  55. # 显示所有获取信息
  56. info("标题:" + title)
  57. info("URL:" + videourl)
  58. info("作者: " + nickname)
  59. info("ID: " + short_id)
  60. info("发布时间: " + create_time)
  61. info("获赞:" + str(digg_count))
  62. info("评论:" + str(comment_count))
  63. info("转发:" + str(share_count))
  64. info('-'*80)
  65. # 保存为json文件
  66. data = {
  67. 'title': title,
  68. 'url': videourl,
  69. 'nickname': nickname,
  70. 'douyin_id': short_id,
  71. 'create_time': create_time,
  72. 'diggs': digg_count,
  73. 'commments': comment_count,
  74. 'shares': share_count
  75. }
  76. # 下载视频
  77. with open('./douyin.json', 'a', encoding='utf-8') as f:
  78. f.write(json.dumps(data, indent=2, ensure_ascii=False))
  79. f.write(', \n')

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/357745
推荐阅读
相关标签
  

闽ICP备14008679号