這個我們要下載視頻,那么肯定首先去找抖音視頻的url地址,那么這個地址肯定在json格式的數據包中,所以我們就去專門查看json格式數據包
這個怎么找我就不用了,直接看結果吧
你找json包,可以選大的去看,畢竟包含視頻地址這些json包肯定不會小
視頻播放地址可能有好多鏈接,這里我只是拿我的做一個例子。我原本用的是下面視頻下載那個地址,但是會匹配到好多沒用的地址
視頻下載url和視頻播放url,我們選擇視頻播放url,畢竟在抖音上有些視頻不允許下載,但是可以播放(^_^)
你發現視頻播放url里面包含0,1兩個可以播放地址,2,3那兩個地址我打開試了試沒用。
0,1兩個播放地址,隨便選一個就行(這里我選的0號),數據包給出兩個地址,應該是防止萬一一個地址不能用(管它呢,隨便用一個就行)
然后就需要把這個json數據弄到本地,不能通過python的request庫訪問來獲取,因為我試了試,弄不到。。。
那這里有兩種方法,一種是復制后,粘貼到txt文件中。第二種就是在fiddler中增添規則,讓fiddler一遇見json數據包就保存到本地
抓取規則如下:
if (oSession.uriContains("https://api-eagle.amemv.com/aweme/v1/feed/")){ var strBody=oSession.GetResponseBodyAsString(); var sps = oSession.PathAndQuery.slice(-58,); //FiddlerObject.alert(sps) var filename = "C:/Users/HEXU/Desktop/抖音數據爬取/抖音爬取資料/raw_data" + "/" + sps + ".json"; var curDate = new Date(); var sw : System.IO.StreamWriter; if (System.IO.File.Exists(filename)){ sw = System.IO.File.AppendText(filename); sw.Write(strBody); } else{ sw = System.IO.File.CreateText(filename); sw.Write(strBody); } sw.Close(); sw.Dispose(); }
放到下圖所示位置
這個腳本有兩點需要修改的:
(1)第一行的網址:
這個是從視頻包的url中摘出來的,抖音會時不時更新這個url,所以不能用了也要去更新:
2)路徑,那個是我設置json包保存的地址,自己一定要去修改,並創建文件夾,修改完記着點保存。
我這里用的是最lou的方法(也就是粘貼復制),這種方法我沒弄好,具體請見:https://blog.csdn.net/weixin_43582101/article/details/89600007
之后我就是把json數據放到文本里面,在python中讀入,然后用re模塊的findall方法獲取其中鏈接
代碼:
import requests import re headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36' } def down_video(url,num): con = requests.get(url,headers=headers).content with open(str(num)+'.mp4','wb') as f: f.write(con) file =open('E:/pycharm/xiang1/python-json/2.json','r',encoding='utf-8',errors='ignore') context = file.read() pattern = 'play_addr_lowbr:.*?list:.*?"(.*?)"' result = re.findall(pattern,context,re.S) ans = 1 for i in result: print(i) down_video(i,ans) ans+=1
同時pycharm控制台也會輸出鏈接:
但是要注意,這些鏈接都有時效,過一段時間就不能用了
運行后結果: