随着身体的一阵抖动,python 下载的抖音小姐姐都没味了

Python技术

共 2508字,需浏览 6分钟

 ·

2021-12-27 15:25

e65a2a3907c181d0b5a457cecf5a6fbe.webp

文 | 某某白米饭

来源:Python 技术「ID: pythonall」

2928366e4190865b28704f3dd95a33a9.webp

大伙都知道抖音上有非常多的漂亮小姐姐,说话又好听,皮肤又好。刷的都停不下来。

03f97f28f1bee99daae7119ef9608486.webp

爬虫开始

首先将 google 浏览器在设置中将将重定向设置成否,再打开 F12 控制面板设置页面为 android 样式,如下图:

7bd159c018d836d5170de12321db1f40.webp

然后开始把抖音分享的地址,复制到地址栏。在控制面板的网络中,就可以找到那个 url,提取header 下的 location 与其中的 sec_uid。

f0e0ac7676a06592205b55242c36620e.webp
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  = '长按复制此条消息,打开抖音搜索,查看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)

在控制面板中有一个 /web/api/v2/user/info/ 的地址,这个就是用户的个人资料。其中有需要的昵称,提取后创建文件夹。

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)

从响应面板中找到一个是 json 串返回值的,并且有视频标题的存在 /web/api/v2/aweme/post/,这个就是我们需要的。这里面包含了:视频的地址和标题。它有五个 post 参数:1. sec_uid,2. count 每次查询的视频个数,3. max_cursor:时间戳,4. _signature:标记,5. 还有一个隐藏的 min_cursor:最小的时间戳

348b514fc379687aa79bf5cdba833beb.webp
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)

获取到视频列表后循环下载每个视频,并写入文件中。

with open(title + ".mp4"'wb'as f:
    f.write(requests.get(url, headers=headers).content)
    print(title + "------------------下载完成")
9eb780214087c2252f5e6e70ff32a1e2.webp

总结

上班摸鱼下载,下班路上愉快的刷刷刷。觉得本文还可以的小伙伴,可以点个赞吗?

PS公号内回复「Python」即可进入Python 新手学习交流群,一起 100 天计划!


老规矩,兄弟们还记得么,右下角的 “在看” 点一下如果感觉文章内容不错的话,记得分享朋友圈让更多的人知道!

3e4ffcf5c5c6cc97a5697726b92a4dad.webp

代码获取方式

识别文末二维码,回复:某某白米饭




浏览 38
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报