最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python實現(xiàn)抖音視頻批量下載

 更新時間:2018年06月20日 09:16:32   作者:y1175626605  
這篇文章主要為大家詳細介紹了python實現(xiàn)抖音視頻批量下載,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了python實現(xiàn)抖音視頻批量下載的具體代碼,供大家參考,具體內(nèi)容如下

這里就拿最近很火的抖音視頻為例,利用API來實現(xiàn)用戶抖音視頻的批量下載

主要用到的模塊有

1、requests模塊;

2、bs4模塊;

import requests
import bs4
import os
import json
import re
import sys
import time
from contextlib import closing
requests.packages.urllib3.disable_warnings()
class Spider():
  def __init__(self):
    self.headers = {
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.146 Safari/537.36'
            }
    print('[INFO]:Douyin App Video downloader...')
    print('[Version]: V1.0')
    print('[Author]: Charles')
  # 外部調(diào)用運行
  def run(self):
    user_id = input('Enter the ID:')
    try:
      int(user_id)
    except:
      print('[Error]:ID error...')
      return
    video_names, video_urls, nickname = self._parse_userID(user_id)
    if nickname not in os.listdir():
      os.mkdir(nickname)
    print('[INFO]:Number of Videos <%s>' % len(video_urls))
    for num in range(len(video_names)):
      print('[INFO]:Parsing <No.%d> <Url:%s>' % (num+1, video_urls[num]))
      temp = video_names[num].replace('\\', '')
      video_name = temp.replace('/', '')
      self._downloader(video_urls[num], os.path.join(nickname, video_name))
      print('\n')
    print('[INFO]:All Done...')
  # 視頻下載
  def _downloader(self, video_url, path):
    size = 0
    download_url = self._get_download_url(video_url)
    with closing(requests.get(download_url, headers=self.headers, stream=True, verify=False)) as response:
      chunk_size = 1024
      content_size = int(response.headers['content-length'])
      if response.status_code == 200:
        sys.stdout.write('[File Size]: %0.2f MB\n' % (content_size/chunk_size/1024))
        with open(path, 'wb') as f:
          for data in response.iter_content(chunk_size=chunk_size):
            f.write(data)
            size += len(data)
            f.flush()
            sys.stdout.write('[Progress]: %0.2f%%' % float(size/content_size*100) + '\r')
            sys.stdout.flush()
  # 獲得視頻下載地址
  def _get_download_url(self, video_url):
    res = requests.get(url=video_url, verify=False)
    soup = bs4.BeautifulSoup(res.text, 'lxml')
    script = soup.find_all('script')[-1]
    video_url_js = re.findall('var data = \[(.+)\];', str(script))[0]
    html = json.loads(video_url_js)
    return html['video']['play_addr']['url_list'][0]
  # 通過user_id獲取該用戶發(fā)布的所有視頻
  def _parse_userID(self, user_id):
    video_names = []
    video_urls = []
    unique_id = ''
    while unique_id != user_id:
      search_url = 'https://api.amemv.com/aweme/v1/discover/search/?keyword={}&count=10&type=1&aid=1128'.format(user_id)
      res = requests.get(url=search_url, verify=False)
      res_dic = json.loads(res.text)
      uid = res_dic['user_list'][0]['user_info']['uid']
      aweme_count = res_dic['user_list'][0]['user_info']['aweme_count']
      nickname = res_dic['user_list'][0]['user_info']['nickname']
      unique_id = res_dic['user_list'][0]['user_info']['unique_id']
    user_url = 'https://www.douyin.com/aweme/v1/aweme/post/?user_id={}&max_cursor=0&count={}'.format(uid, aweme_count)
    res = requests.get(url=user_url, verify=False)
    res_dic = json.loads(res.text)
    i = 1
    for each in res_dic['aweme_list']:
      share_desc = each['share_info']['share_desc']
      if '抖音-原創(chuàng)音樂短視頻社區(qū)' == share_desc:
        video_names.append(str(i) + '.mp4')
        i += 1
      else:
        video_names.append(share_desc + '.mp4')
      video_urls.append(each['share_info']['share_url'])
    return video_names, video_urls, nickname
if __name__ == '__main__':
  sp = Spider()
  sp.run()

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • Python中實現(xiàn)堆排序算法

    Python中實現(xiàn)堆排序算法

    堆排序是一種強大的算法,用于在 Python 中對數(shù)組和列表進行排序, 它很受歡迎,因為它非???并且不像合并排序和快速排序那樣占用任何額外空間,本篇文章將介紹堆排序算法在 Python 中的實現(xiàn),感興趣的朋友跟隨小編一起看看吧
    2023-08-08
  • Python集合基本概念與相關操作實例分析

    Python集合基本概念與相關操作實例分析

    這篇文章主要介紹了Python集合基本概念與相關操作,結合實例形式分析了Python集合的功能、原理、基本使用方法及操作注意事項,需要的朋友可以參考下
    2019-10-10
  • python不相等的兩個字符串的 if 條件判斷為True詳解

    python不相等的兩個字符串的 if 條件判斷為True詳解

    這篇文章主要介紹了python不相等的兩個字符串的 if 條件判斷為True詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-03-03
  • Python MD5文件生成碼

    Python MD5文件生成碼

    用python實現(xiàn)文件md5生成碼核心實現(xiàn)代碼。
    2009-01-01
  • Django?url.py?path?name同一app下路由別名定義

    Django?url.py?path?name同一app下路由別名定義

    這篇文章主要為大家介紹了Django?url.py?path?name同一app下路由別名定義詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-07-07
  • Selenium?三種等待方式(強制等待、隱式等待、顯示等待)

    Selenium?三種等待方式(強制等待、隱式等待、顯示等待)

    這篇文章主要介紹了Selenium?三種等待方式(強制等待、隱式等待、顯示等待),文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • 使用Python實現(xiàn)LLM的模型遷移

    使用Python實現(xiàn)LLM的模型遷移

    在當今的人工智能領域,大型語言模型(LLM)如GPT、BERT等已經(jīng)成為了研究和應用的熱點,但其訓練和部署成本高昂,且在不同領域或任務間的遷移能力有限,因此,如何有效地實現(xiàn)LLM的模型遷移,成為了一個重要的研究方向,本文將深入探討如何使用Python實現(xiàn)LLM的模型遷
    2025-02-02
  • Python 做曲線擬合和求積分的方法

    Python 做曲線擬合和求積分的方法

    今天小編就為大家分享一篇Python 做曲線擬合和求積分的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12
  • Python+PyQt5實現(xiàn)開發(fā)Memcached客戶端

    Python+PyQt5實現(xiàn)開發(fā)Memcached客戶端

    這篇文章主要介紹了如何使用Python和PyQt5來制作一個Memcached客戶端,以便我們可以輕松地與Memcached服務器進行交互,感興趣的小伙伴可以了解一下
    2023-06-06
  • Python獲取電腦硬件信息及狀態(tài)的實現(xiàn)方法

    Python獲取電腦硬件信息及狀態(tài)的實現(xiàn)方法

    這篇文章主要介紹了Python獲取電腦硬件信息及狀態(tài)的實現(xiàn)方法,是一個很實用的技巧,需要的朋友可以參考下
    2014-08-08

最新評論

南城县| 图片| 平陆县| 卢氏县| 石柱| 精河县| 井陉县| 涞水县| 浦东新区| 南雄市| 中方县| 崇仁县| 朝阳市| 辽宁省| 莆田市| 鄂温| 甘孜县| 商丘市| 慈利县| 河北省| 托克逊县| 湾仔区| 邵东县| 镇原县| 新田县| 博乐市| 苏尼特右旗| 黄山市| 招远市| 蒲城县| 南投市| 滁州市| 汾西县| 九江县| 南乐县| 越西县| 镇雄县| 萨迦县| 深泽县| 江城| 松桃|