隨著身體的一陣抖動(dòng),python 下載的抖音小姐姐都沒(méi)味了

文 |?某某白米飯
來(lái)源:Python 技術(shù)「ID: pythonall」

大伙都知道抖音上有非常多的漂亮小姐姐,說(shuō)話又好聽,皮膚又好。刷的都停不下來(lái)。

爬蟲開始
首先將 google 瀏覽器在設(shè)置中將將重定向設(shè)置成否,再打開 F12 控制面板設(shè)置頁(yè)面為 android 樣式,如下圖:

然后開始把抖音分享的地址,復(fù)制到地址欄。在控制面板的網(wǎng)絡(luò)中,就可以找到那個(gè) url,提取header 下的 location 與其中的 sec_uid。

import?request
import?re
import?json
import?os
import?time
headers?=?{
????"user-agent":?"Mozilla/5.0?(Linux;?Android?6.0.1;?Moto?G?(4))?AppleWebKit/537.36?(KHTML,?like?Gecko)?Chrome/96.0.4664.110?Mobile?Safari/537.36"
}
#share ?=?'長(zhǎng)按復(fù)制此條消息,打開抖音搜索,查看TA的更多作品。https://v.douyin.com/Rwauvh4/'
share?=?input('分享的鏈接:')
url?=?re.findall('(https?://[-A-Za-z0-9+&@#/%?=~_|!:,.;]+[-A-Za-z0-9+&@#/%=~_|]+)',?share)[0]
resp?=?requests.get(url=url,?headers=headers,?allow_redirects=False)
location?=?resp.headers['location']
temp?=?location.split('&')
sec_uid?=?temp[4].split('=')[1]
print(sec_uid)
在控制面板中有一個(gè) /web/api/v2/user/info/ 的地址,這個(gè)就是用戶的個(gè)人資料。其中有需要的昵稱,提取后創(chuàng)建文件夾。
url?=?"https://www.iesdouyin.com/web/api/v2/user/info/?sec_uid={}".format(sec_uid)
resp?=?requests.get(url,?headers=headers)
userinfo?=?json.loads(resp.text)
name?=?userinfo['user_info']['nickname']
if?os.path.exists(name)?==?False:
????os.mkdir(name)
os.chdir(name)
從響應(yīng)面板中找到一個(gè)是 json 串返回值的,并且有視頻標(biāo)題的存在 /web/api/v2/aweme/post/,這個(gè)就是我們需要的。這里面包含了:視頻的地址和標(biāo)題。它有五個(gè) post 參數(shù):1. sec_uid,2. count 每次查詢的視頻個(gè)數(shù),3. max_cursor:時(shí)間戳,4. _signature:標(biāo)記,5. 還有一個(gè)隱藏的 min_cursor:最小的時(shí)間戳

year?=?[2020,2021,2022]
cursor?=?[]
for?y?in?year:
????for?i?in?range(1,13):
????????calc?=?str(y)?+?'-'+?str(i)?+?'-'?+?'01?00:00:00'
????????timeArray?=?time.strptime(calc,?"%Y-%m-%d?%H:%M:%S")
????????timeStamp?=?int(time.mktime(timeArray))?*?1000
????????cursor.append(timeStamp)
for?i?in?range(len(cursor)?-?1):
????params?=?{
????????"sec_uid":?sec_uid,
????????"count":?200,
????????"min_cursor":?cursor[i],
????????"max_cursor":?cursor[i+1],
????????"_signature":?"Sq1xlgAAK2.rxFYl7oQq7EqtcY"
????}
????url?=?'https://www.iesdouyin.com/web/api/v2/aweme/post/?'
????resp?=?requests.get(url=url,?params=params,?headers=headers)
????data?=?json.loads(resp.text)
????awemenum?=?data['aweme_list']
????for?item?in?awemenum:
????????title?=?re.sub('[\/:*?"<>|]','-',item['desc'])
????????url?=?item['video']['play_addr']['url_list'][0]
????????print(title?+?":"?+?url)
獲取到視頻列表后循環(huán)下載每個(gè)視頻,并寫入文件中。
with?open(title?+?".mp4",?'wb')?as?f:
????f.write(requests.get(url,?headers=headers).content)
????print(title?+?"------------------下載完成")

總結(jié)
上班摸魚下載,下班路上愉快的刷刷刷。覺得本文還可以的小伙伴,可以點(diǎn)個(gè)贊嗎?
PS:公號(hào)內(nèi)回復(fù)「Python」即可進(jìn)入Python 新手學(xué)習(xí)交流群,一起 100 天計(jì)劃!
老規(guī)矩,兄弟們還記得么,右下角的 “在看” 點(diǎn)一下,如果感覺文章內(nèi)容不錯(cuò)的話,記得分享朋友圈讓更多的人知道!

【代碼獲取方式】
識(shí)別文末二維碼,回復(fù):某某白米飯