酷站(www.ku0.com)-致力于为互联网从业者提供动力!

热门关键词:  企业  as  baidu  c4rp3nt3r  美女
阿里云爆款特惠,精选爆款产品低至0.55折

python爬取抖音视频的实例详解

来源:转载 作者:秩名 人气: 发布时间:2021-01-19
本篇文章主要介绍了python爬取抖音视频的实例详解,对大家的学习或者工作具有一定的参考学习价值,感兴趣的小伙伴们可以参考一下,也感谢大家对酷站(ku0.com)的支持。

现在抖音的火爆程度,大家都是有目共睹的吧,之前小编在网络上发现好玩的事情,就是去爬取一些网站,因此,也考虑能否进行抖音上的破案去,在实际操作以后,真的实现出来了,利用自动化工具,就可以轻松实现了,后有小伙伴提出把appium去掉瘦身之后也是可以实现的,那么看下详细操作内容吧。

1、mitmproxy/mitmdump抓包

import requests
path = 'D:/video/'
num = 1788
def response(flow):
 global num
 target_urls = ['url']
 for url in target_urls:
   if flow.request.url.startswith(url):
      filename = path + str(num) + '.mp4
   res = requests.get(flow.request.url, stream=True)
    with open(filename, 'ab') as f:
    f.write(res.content)
    f.flush()
    print(filename + '下载完成')
   num += 1
 

2、Appium对手机进行模拟操作

利用Start Server按钮即可启动appium服务

再点击Start Session即可启动Android手机上的抖音app并进入到启动页面

3、python脚本来驱动app,直接在pycharm运行即可

实例扩展:

import requests
import json
import re
import os
from pprint import pprint as pp
import queue


class DouYin:
 header = {
  'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
  'accept-encoding': 'gzip, deflate, br',
  'accept-language': 'zh-CN,zh;q=0.9',
  'cache-control': 'max-age=0',
  'upgrade-insecure-requests': '1',
  'user-agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1',
 }

 def __init__(self, url=None):
  self.url = self.get_RealAddress(url)
  # 获取用户视频的url
  self.user_video_url = 'https://www.douyin.com/aweme/v1/aweme/post/?{0}'
  self.user_id = re.search(r'user/(.*)\?', self.url).group(1)		# 用户id
  requests.packages.urllib3.disable_warnings()
  self.session = requests.Session()
  self.target_folder = ''		# 创建文件的路径
  self.queue = queue.Queue()		# 生成一个队列对象

 def user_info(self):
  self.mkdir_dir()
  p = os.popen('node fuck.js %s' % self.user_id) # 获取加密的signature
  signature = p.readlines()[0]

  user_video_params = {
   'user_id': str(self.user_id),
   'count': '21',
   'max_cursor': '0',
   'aid': '1128',
   '_signature': signature
  }

  # 获取下载视频的列表
  def get_aweme_list(max_cursor=None):
   if max_cursor:
    user_video_params['max_cursor'] = str(max_cursor)
   user_video_url = self.user_video_url.format(
    '&'.join([key + '=' + user_video_params[key] for key in user_video_params])) # 拼接参数
   response = requests.get(
    url=user_video_url, headers=self.header, verify=False)
   contentJson = json.loads(response.content.decode('utf-8')) # 将返回的进行utf8编码
   aweme_list = contentJson.get('aweme_list', [])
   for aweme in aweme_list:
    video_name = aweme.get(
     'share_info', None).get('share_desc', None)  # 视频的名字
    video_url = aweme.get('video', None).get('play_addr', None).get(
     'url_list', None)[0].replace('playwm', 'play')  # 视频链接
    self.queue.put((video_name, video_url)) # 将数据进队列
   if contentJson.get('has_more') == 1: # 判断后面是不是还有是1就是还有
    return get_aweme_list(contentJson.get('max_cursor')) # 有的话获取参数max_cursor
  get_aweme_list()

 # 下载视频
 def get_download(self):
  while True:
   video_name, video_url = self.queue.get()
   file_name = video_name + '.mp4'
   file_path = os.path.join(self.target_folder, file_name)
   if not os.path.isfile(file_path):
    print('download %s form %s.\n' % (file_name, video_url))
    times = 0
    while times < 10:
     try:
      response = requests.get(
       url=video_url, stream=True, timeout=10, verify=False) # 开启流下载
      with open(file_path, 'wb') as f:
       for chunk in response.iter_content(1024): # 返回迭代对象
        f.write(chunk)
       print('下载成功')
      break
     except:
      print('下载失败')
     times += 1

 # 创建对应的文件夹

 def mkdir_dir(self):
  current_folder = os.getcwd()
  self.target_folder = os.path.join(
   current_folder, 'download/%s' % self.user_id)
  if not os.path.isdir(self.target_folder):
   os.mkdir(self.target_folder)

 # 短链接转长地址
 def get_RealAddress(self, url):
  if url.find('v.douyin.com') < 0:
   return url
  response = requests.get(
   url=url, headers=self.header, allow_redirects=False) # allow_redirects 允许跳转
  return response.headers['Location']

if __name__ == '__main__':
 douyin = DouYin(url='http://v.douyin.com/J2B9Sk/')
 douyin.user_info()
 douyin.get_download()


版权声明:本文内容来源于互联网或用户自行发布贡献,该文观点仅代表原作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 959677720#qq.cn(#换@) 举报,一经查实,本站将立刻删除。
原文链接:https://www.py.cn/jishu/jichu/23051.html

相关文章

  • 使用Python进行PDF图片识别OCR

    使用Python进行PDF图片识别OCR

    使用图片识别可以快速提取图片中的信息,方便高效。 Python并不能直接对PDF进行识别,所以如果是识别PDF的话,需要先将PDF转化为图片,然后再进行识别。 必备工具 Python 可以安装3.7及以上版本 tesseract-ocr 下载地址:https://github.......
    01-22
  • Python实现石头剪刀布游戏的代码

    Python实现石头剪刀布游戏的代码

    利用随机函数制作石头剪刀布小游戏 程序只运行一次 import randoma = input(请出拳(石头/剪刀/布):)b = [剪刀, 石头, 布]# 定义赢的列表win_list = [[石头, 剪刀], [剪刀, 布], [布, 石头]]# 计算机随机选择出拳mac = random.choice(b)p......
    01-21
  • python爬取抖音视频的实例详解

    python爬取抖音视频的实例详解

    现在抖音的火爆程度,大家都是有目共睹的吧,之前小编在网络上发现好玩的事情,就是去爬取一些网站,因此,也考虑能否进行抖音上的破案去,在实际操作以后,真的实现出来了,利用自动化工具,就可以轻松实现了,后有小伙伴提出把appium去......
    01-19
  • python制作微博图片爬取工具的教程详解

    python制作微博图片爬取工具的教程详解

    有小半个月没有发博客了,因为一直在研究python的GUI,买了一本书学习了一些基础,用我所学做了我的第一款GUI微博图片爬取工具。本软件源代码已经放在了博客中,另外软件已经打包好上传到网盘中以供下载学习。 一.准备工作 本次要用到以......
    01-16
  • 详解pycharm鼠标右键快捷键打开项目

    详解pycharm鼠标右键快捷键打开项目

    1、查看鼠标右键快捷键,可以看到pycharm打开项目快捷键 2、打开注册器 win+r键打开,输入regedit,运行注册器 找到下面的路径:计算机\HKEY_CLASSES_ROOT\Directory\Background\shell\PyCharm 删除pycharm文件夹,即可 已经没有了,表示......
    01-16
  • 使用OpenCV实现人脸图像卡通化

    使用OpenCV实现人脸图像卡通化

    通过前面的文章我们已经了解到OpenCV 是一个用于计算机视觉和机器学习的开源 python 库。它主要针对实时计算机视觉和图像处理。它用于对图像执行不同的操作,这些操作使用不同的技术对图像进行转换。在本文中,我们将实现使用OpenCV将人......
    01-15
  • 让你相见恨晚的十个Python骚操作

    让你相见恨晚的十个Python骚操作

    前言 众所周知,Python 以语法简洁著称,同样实现一个功能,Java 可能要十来行,Python 一行就可以搞定。 Python 的代码之所以这么优雅,完全归功于其独有的特性,只要你掌握了这些特性,同样可以写出像诗一样的代码。 下面我们就一起看......
    11-18
  • Python实现壁纸下载与轮换的教程

    Python实现壁纸下载与轮换的教程

    准备 下载安装Python3 官网下载即可,选择合适的版本:https://www.python.org/downloads/ 安装一直下一步即可,记得勾选添加到环境变量。 安装pypiwin32 执行设置壁纸操作需要调用Windows系统的API,需要安装pypiwin32,控制台执行如下......
    10-20
  • 教你如何快速自学python

    教你如何快速自学python

    一、作为初学者,应该如何学python? 很多人对python缩进试的简洁表达不以为然。那些都是已混迹于C和JAVA的老鸟已经习惯了花括号。对于初学者,python语言是最好写,最好读的。 二、追求生产力,应该学python python是全能语言,社区庞大......
    06-23
  • python的缩进规则的介绍

    python的缩进规则的介绍

    一般的语言都是通过{}或end来作为代码块的标记,而Python则是通过缩进来识别代码块的。 对于Python的这种缩进风格,喜欢它的人说这是一种乐趣;不喜欢它的人说这是一门需要卡尺的语言,因为需要使用游标卡尺去测量每行代码的缩进。 不管......
    06-23

最新更新