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

使用Python下載抖音各大V視頻的思路詳解

 更新時間:2021年02月06日 12:06:07   作者:松鼠愛出餅干  
這篇文章主要介紹了使用Python下載抖音各大V視頻的思路詳解,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

前言

本文的文字及圖片來源于網絡,僅供學習、交流使用,不具有任何商業(yè)用途,如有問題請及時聯(lián)系我們以作處理。

以下文章來源于Python七號 ,作者 somenzz

Python爬蟲、數據分析、網站開發(fā)等案例教程視頻免費在線觀看

https://space.bilibili.com/523606542

上次寫了用 Python 批量下載知乎視頻的方式,這次分享用 Python 批量下載抖音個人主頁的全部無水印視頻,本文重點不是提供一個好用的腳本,而是講述如何寫出這樣的腳本,正所謂授人以魚,不如授人以漁,所謂的爬蟲,基本都是這個套路。

思路

先說下思路,要批量下載視頻,可以先嘗試成功下載一個,確定沒有水印,然后在寫一個循環(huán)進行批量下載。

難點:下載一個視頻可能很簡單,但下載多個就稍微有點復雜,需要抓取多個視頻對應的 url,抖音這塊做了防爬措施,只允許手機上看到個人主頁的視頻列表,電腦端的網頁卻看不到,這就需要抓取手機的 https 包,這里借助 Burpsuite 進行抓包。

這里用到了 Burpsuite ,因此我把自己常用的 Burpsuite 2.1.06 專業(yè)版放在了網盤里面,公眾號「Python七號」回復「burp」獲取,下載后運行start_burp.bat或sh start_burp.sh即可一鍵啟動,無需購買許可,非常方便。

爬取單個視頻

  • 找一個抖音視頻鏈接,點擊分享,復制鏈接,在電腦上用打開,然后打開開發(fā)者工具,點擊 network 選項。
  • 刷新,看接口,找到返回值里有播放地址的接口:

這里面有個 play_addr,內部有個 urllist,我們復制這個 urllist[0] 在瀏覽器打開,網站跳轉到了真正的播放地址,同時可以看到下載的按鈕:

下載這個視頻,發(fā)現是帶水印的,如何下載到不帶水印的視頻呢?網上搜索了下,方法就是將上述 urllist[0] 中的 playwm 改成 play 就可以了。

然后開始寫代碼,獲取這個 urllist[0],并下載

def get(share_url) -> dict:
  """
  share_url -> 抖音視頻分享url
  返回格式 [{'url':'', 'title','format':'',},{}]
  """
  data = []
  headers = {
    'accept': 'application/json',
    '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'
  }
  api = "https://www.iesdouyin.com/web/api/v2/aweme/iteminfo/?item_ids={item_id}"

  rep = requests.get(share_url, headers=headers, timeout=10)
  if rep.ok:
    # item_id
    item_id = re.findall(r'video/(\d+)', rep.url)
    if item_id:
      item_id = item_id[0]
      # video info
      rep = requests.get(api.format(item_id=item_id), headers=headers, timeout=10)
      if rep.ok and rep.json()["status_code"] == 0:
        info = rep.json()["item_list"][0]
        tmp = {}
        tmp["title"] = info["desc"]

        #去水印的視頻鏈接
        play_url = info["video"]["play_addr"]["url_list"][0].replace('playwm', 'play')
        tmp["url"] = play_url
        tmp["format"] = 'mp4'
       def get(share_url) -> dict:
  """
  share_url -> 抖音視頻分享url
  返回格式 [{'url':'', 'title','format':'',},{}]
  """
  data = []
  headers = {
    'accept': 'application/json',
    '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'
  }
  api = "https://www.iesdouyin.com/web/api/v2/aweme/iteminfo/?item_ids={item_id}"

  rep = requests.get(share_url, headers=headers, timeout=10)
  if rep.ok:
    # item_id
    item_id = re.findall(r'video/(\d+)', rep.url)
    if item_id:
      item_id = item_id[0]
      # video info
      rep = requests.get(api.format(item_id=item_id), headers=headers, timeout=10)
      if rep.ok and rep.json()["status_code"] == 0:
        info = rep.json()["item_list"][0]
        tmp = {}
        tmp["title"] = info["desc"]

        #去水印的視頻鏈接
        play_url = info["video"]["play_addr"]["url_list"][0].replace('playwm', 'play')
        tmp["url"] = play_url
        tmp["format"] = 'mp4'
        data.append(tmp)

  return data

if __name__ =='__main__':
  videos = get('https://www.iesdouyin.com/share/video/6920538027345415431/?region=&mid=6920538030852885262&u_code=48&titleType=title&did=0&iid=0')
  for video in videos:
    downloader.download(video['url'],video['title'],video['format'],'./download') data.append(tmp)

  return data

if __name__ =='__main__':
  videos = get('https://www.iesdouyin.com/share/video/6920538027345415431/?region=&mid=6920538030852885262&u_code=48&titleType=title&did=0&iid=0')
  for video in videos:
    downloader.download(video['url'],video['title'],video['format'],'./download')

這里 downloader.download 函數,與前文知乎視頻下載 里的函數一樣,這里就不貼代碼了。

獲取個人主頁視頻鏈接

前兩步已經實現了單個抖音視頻的無水印下載,現在我們要做的就是找到大量的這種鏈接,直接循環(huán)就可以了。

任意打開一個大 V 的個人主頁,分享,復制鏈接,使用瀏覽器打開,一個視頻也看不到,而使用抖音 App 就可以看到:

瀏覽器

抖音APP

說明抖音做了一定的限制,防止從瀏覽器看到多個視頻的信息。這時就需要學會從手機 APP 來抓包,看看手機上的 http 請求是怎么發(fā)起的,然后使用程序來模擬。

我一直在用的 BurpSuite(下面簡稱 Burp) 非常好用,這里順便分享下如何使用:

1、運行 Burp

下載后運行start_burp.bat或sh start_burp.sh來啟動 Burp,然后打開代理設置,綁定到運行 Burp 的機器 IP,如下圖所示:

注意不要設置 ip 為 127.0.0.1,這樣設置的話,只有本地請求可以使用代理,手機無法連接此代理。

2、手機設置代理

手機與電腦連接同一 wifi,IPhone 的操作如下:然后進入設置-> 無線局域網 -> 點擊同一 wifi 右邊的 information 符號,然后下拉,點擊配置代理,配置和 BurpSuite 一樣的 ip 和端口。Android 的手機的設置也差不多。至此可以在 BurpSuite 上抓取手機的 http 流量。

3、手機下載 Burp 的證書,并設置信任

手機瀏覽器 進入 http://burp。點擊 CA 下載證書。設置->通用->描述文件->點擊 PortSwigger CA->安裝設置->通用->關于本機->證書信任設置,將 BurpSuite 的證書開啟

這樣就可以抓取手機上發(fā)起的 https 包了。

4、設置 BurpSuite 中斷

這一步驟設置之后,手機上的請求會在這里阻塞,你可以放行選擇放行,或修改數據包后放行,也可以發(fā)往 repeater,以便后續(xù)重放請求,因此來自前端的請求是不可信的。

現在打開手機上的抖音 App,這里便會出現大量的請求阻塞在這里,我們選擇放行,會發(fā)現抖音 App 里的數據一步一步的出現??焖⒌絺€人主頁的視頻之前,將請求發(fā)到 Repeater,如下圖所示:

然后打開 BurpSuite 的 Repeater 選項卡,就可以看到剛才發(fā)過來的請求,這時我們選擇重放,看數據,決定我們需要使用的接口,如下圖所示:

發(fā)現這個接口滿足請求,這里可以看到接口的 url,headers 的各種參數,headers 中的 User-Agent 參數,是區(qū)分客戶端是瀏覽器還是 App 的重要標識,因此就可以寫代碼來模擬請求,進而獲取需要的批量下載鏈接。

由于 url 中的參數非常多,有些是固定不變的,有些隨著不同人的主頁參數會發(fā)生變化,如果僅僅是自己使用,可以簡單的通過正則表達式來提取這些 url 鏈接,然后進行批量下載就可以了。

如果是想寫好一個腳本供別人使用,那么就需要做更多的工作,比如說,需要查看更多的 api,以便確定 url 及 headers 中的參數是如何獲取或生成的,然后寫腳本自動化這一過程,有些情況下,還涉及到加密混淆等反爬措施,這里就不再展開了,請感興趣的讀者自行探索。

最后的話

爬取視頻的關鍵在于找到視頻的播放地址,有了播放地址,即使不寫代碼,也可以使用瀏覽器下載,尋找播放地址還不夠,要考慮是否能去水印,如果要批量下載,那就要知道如何獲取更多的視頻鏈接,在瀏覽器抓取不到的時候,考慮使用 BurpSuite 抓取手機的流量包,進一步提取接口的數據,或模擬手機請求,對搞爬蟲的同學,BurpSuite 是一個瑞士軍刀,非常實用。

如果本文對你有所幫助,請點個贊或再看吧,謝謝支持。

到此這篇關于使用Python下載抖音各大V視頻的思路詳解的文章就介紹到這了,更多相關Python下載抖音視頻內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • python實現代碼行數統(tǒng)計示例分享

    python實現代碼行數統(tǒng)計示例分享

    這篇文章主要介紹了python實現代碼行數統(tǒng)計的示例,需要的朋友可以參考下
    2014-02-02
  • Python復制Excel表格中指定數據若干次的方法

    Python復制Excel表格中指定數據若干次的方法

    本文介紹基于Python語言,讀取Excel表格文件數據,并基于其中某一列數據的值,將這一數據處于指定范圍的那一行加以復制,并將所得結果保存為新的Excel表格文件的方法,需要的朋友可以參考下
    2024-02-02
  • python字典根據key排序的實現

    python字典根據key排序的實現

    本文主要介紹了python字典根據key排序的實現,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2025-01-01
  • 5款Python程序員高頻使用開發(fā)工具推薦

    5款Python程序員高頻使用開發(fā)工具推薦

    這篇文章主要介紹了5款Python程序員高頻使用開發(fā)工具,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-04-04
  • 基于Python的XML格式的文件示例代碼詳解

    基于Python的XML格式的文件示例代碼詳解

    這篇文章主要介紹了基于Python的XML格式的文件示例代碼詳解,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03
  • 9行Python3代碼實現批量提取PDF文件的指定內容

    9行Python3代碼實現批量提取PDF文件的指定內容

    這篇文章主要為大家詳細介紹了如何通過9行Python3代碼實現批量提取PDF文件的指定內容,文中的示例代碼講解詳細,感興趣的小伙伴可以嘗試一下
    2022-12-12
  • pytorch 圖像預處理之減去均值,除以方差的實例

    pytorch 圖像預處理之減去均值,除以方差的實例

    今天小編就為大家分享一篇pytorch 圖像預處理之減去均值,除以方差的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01
  • python連接mysql數據庫并讀取數據的實現

    python連接mysql數據庫并讀取數據的實現

    這篇文章主要介紹了python連接mysql數據庫并讀取數據的實現,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-09-09
  • python正則表達式之re.match()與re.search()的用法及區(qū)別

    python正則表達式之re.match()與re.search()的用法及區(qū)別

    本文主要介紹了python正則表達式之re.match()與re.search()的用法及區(qū)別,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-08-08
  • python利用pandas將excel文件轉換為txt文件的方法

    python利用pandas將excel文件轉換為txt文件的方法

    今天小編就為大家分享一篇python利用pandas將excel文件轉換為txt文件的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-10-10

最新評論

普格县| 太原市| 蓬溪县| 夏津县| 昆山市| 安阳县| 武威市| 墨江| 平南县| 隆回县| 长武县| 昭平县| 龙门县| 平南县| 吉林市| 视频| 桑日县| 谷城县| 绥化市| 神池县| 彭山县| 鹤岗市| 耒阳市| 娄烦县| 晋江市| 新源县| 中牟县| 平凉市| 赤峰市| 林州市| 桂东县| 馆陶县| 星座| 柘荣县| 太仆寺旗| 加查县| 尖扎县| 曲沃县| 新乐市| 文化| 内黄县|