<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Python爬取抖音短視頻(無水印版)

          共 2481字,需瀏覽 5分鐘

           ·

          2021-12-15 20:29

          ↑?關(guān)注 + 星標(biāo)?,每天學(xué)Python新技能

          后臺回復(fù)【大禮包】送你Python自學(xué)大禮包


          1. 使用更簡單的方法


          在我之前的一篇博客中,我用了構(gòu)造網(wǎng)址的方法來獲取抖音短視頻,但是在今天我又一次的研究抖音短視頻的時候發(fā)現(xiàn)了一個更加簡單的方法,發(fā)現(xiàn)我之前的分析實在是太過繁瑣了,所以有寫了一篇博客來記錄下這個方法。


          與上一篇博客不同的是,這個方法可以省略掉大量的分析步驟


          隨便打開一個抖音個人主頁,我選擇的是愛奇藝體育,接著右鍵檢查網(wǎng)頁元素,點擊network選項卡下的xhr選項,分析抓到的包



          點到preview選項卡,點擊video->download_addr->url_list



          發(fā)現(xiàn)這下面跟著的兩個網(wǎng)址正好是視頻的網(wǎng)址(根本不需要構(gòu)造,只是這個網(wǎng)址藏的有點深,需要非常耐心的尋找),打開網(wǎng)址查看:



          提取到這個網(wǎng)址的時候我以為已經(jīng)結(jié)束了,但是一個大佬@金亭玉立給我發(fā)來了一篇文章提醒了我一些沒有想到的東西,在此表示感謝!


          我們接著往下看,在下面的play_addr下面也有一個鏈接,這個鏈接下面的視頻就是無水印版本的視頻



          ok,現(xiàn)在我們只要想辦法提取到它就大功告成了


          我這次使用的方法中用到了jsonpath模塊,直接pip下載就可以了:

          pip?install?jsonpath



          2. 代碼


          import requestsimport jsonimport jsonpath
          class Douyin: def page_num(self,max_cursor): #隨機碼 random_field = '00nvcRAUjgJQBMjqpgesfdNJ72&dytk=4a01c95562f1f10264fb14086512f919' #網(wǎng)址的主體 url = 'https://www.iesdouyin.com/web/api/v2/aweme/post/?sec_uid=MS4wLjABAAAAU7Bwg8WznVaafqWLyLUwcVUf9LgrKGYmctJ3n5SwlOA&count=21&max_cursor=' + str(max_cursor) + '&aid=1128&_signature=' + random_field #請求頭 headers = { 'user-agent':'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36', } response = requests.get(url,headers=headers).text #轉(zhuǎn)換成json數(shù)據(jù) resp = json.loads(response) #提取到max_cursor max_cursor = resp['max_cursor'] #遍歷 for data in resp['aweme_list']: # 視頻簡介 video_title = data['desc'] #使用jsonpath語法提取paly_addr video_url = jsonpath.jsonpath(data,'$..paly_addr') for a in video_url: #提取出來第一個鏈接地址 video_realurl = a['url_list'][1] # 請求視頻 video = requests.get(video_realurl, headers=headers).content with open('t/' + video_title, 'wb') as f: print('正在下載:', video_title) f.write(video)
          #判斷停止構(gòu)造網(wǎng)址的條件 if max_cursor==0: return 1 else: douyin.page_num(max_cursor)
          if __name__ == '__main__': douyin = Douyin()?????douyin.page_num(max_cursor=0)


          3. 優(yōu)點


          這個方法的優(yōu)點是可以省去很大一部分的分析網(wǎng)址的步驟,而且沒有調(diào)用到webdriver(可以不限制瀏覽器),速度也會有顯著提升,得到的視頻也是無水印的


          4. 不足


          還是沒有解決隨機生成字符串的問題,操作比較麻煩


          5. 使用方法

          https://github.com/jjjjmhao/Sprider/blob/master/simplescreenrecorder-2020-05-04_23.54.22.mkv


          最后還是希望大家能給我點一波小小的贊或者在看~

          推薦閱讀

          1. 總結(jié)了幾項Python兼職要點,月入3萬不踩坑!

          2. Python寶藏,YYDS

          3. 用Python爬了微信好友,原來他們是這樣的人...

          4. 鴻蒙,真的成了!

          5. Python Web實戰(zhàn):Flask + Vue 開發(fā)一個漂亮的詞云網(wǎng)站


          瀏覽 56
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  亚洲欧美成人在线视频 | 青青草在线视频免费 | 五月天激情婷婷婷久久 | 黄色免费网页 | 国产网红女主播操逼 |