"""
夜神模擬器+fiddler+Python
爬取app小視頻
下載fiddler 配置 網絡與端口
下載夜神 配置網絡 下載認證
下載app 最後抓包
"""
class DouYinApp():
#頁面請求
def get_page(self,url):
response = requests.get(url)
response = response.json()
return response
#頁面解析重要參數skID
def paser_id(self,url):
id_keys = []
items = self.get_page(url)
for id in items['tab_list']:
skID = id['skipID']
id_keys.append(skID)
return id_keys
#構造詳情頁url
def details_url(self,url):
details_url = []
for video_url in self.paser_id(url):
mp4_url = 'https://c.m.163.com/nc/video/detail/{}.html'.format(video_url)
details_url.append(mp4_url)
return details_url
#提取視頻鏈接並下載
def paser_mp4(self,url):
links = []
for mp4 in self.details_url(url):
resp = self.get_page(mp4)
mp4_urls = resp['mp4Hd_url']
title = resp['title']
#print(mp4_urls,title)
info = {'title':title,'mp4_url':mp4_urls}
links.append(info)
print(title)
return links
#短視頻下載
def save(self,name,contentt):
with open(str(name)+'.mp4','wb')as f:
f.write(contentt)
#下載視頻並保存
def load_app(self,url):
for results in self.paser_mp4(url):
title = results['title'][1:8]
video = results['mp4_url']
response = requests.get(video)
response = response.content
self.save(title,response)
#構造翻頁
def pool_url(self):
urls = []
for i in range(5):
url = 'https://c.m.163.com/nc/subscribe/list/T1528640720843/all/{}-20.html' .format(i*20)
urls.append(url)
#print(url)
return urls
if __name__ == "__main__":
douyin = DouYinApp()
print('開始爬取抖音視頻。。。。')
#多線程
pool = Pool()
results = pool.map(douyin.load_app,douyin.pool_url())
pool.close()
pool.join()
print('開始爬取抖音視頻結束嘍。。。。')
爬取結果: