前言: 出于兴趣,这里来做了一个半自动化的抖音视频爬虫,该爬虫可以实现爬取某一用户发布的所有视频。
环境: 夜深模拟器(安卓4)
CODE:
import json,os
import requests
def response(flow):
#分析数据发现这是抖音旧的视频请求地址(估计是防爬取定时换的吧)
#url='https://api.amemv.com/aweme/v1/aweme/post/'
url='https://api3-normal-c-lq.amemv.com/aweme/v1/aweme/post/'
#筛选出以上面url为开头的url
if flow.request.url.startswith(url):
text=flow.response.text
#将已编码的json字符串解码为python对象
data=json.loads(text)
#在charles中刚刚看到每一个视频的所有信息
#都在aweme_list中
video_url=data['aweme_list']
print(video_url)
path='G:/Others/Douyin'
#path='D:\crawler_data\douyin'
if not os.path.exists(path):
os.mkdir(path)
for each in video_url:
#视频描述
desc=each['desc']
url=each['video']['play_addr']['url_list'][0]
# print(desc,url)
filename=path+'/'+desc+'.mp4'
# print(filename)
req=requests.get(url=url,verify=False)
with open(filename,'ab') as f:
f.write(req.content)
# 在文件关闭前,将缓存区的内容刷新到硬盘
f.flush()
print(filename,'下载完毕')
Charles分析:
成果:
PS:
1、由于mitmdump自带的包只是基本python库,这里需要将python代码放到python的site-packages文件夹中运行。
2、在刷抖音的过程中,想下载谁的视频,只需要将代码运行着,点谁的用户的主页就可以下载到视频。
3、在模拟器的配置过程中,遇到了配置好mitmproxy证书以后抖音无法正常联网的情况,这里需要搜索一下安卓关闭SSL教程,需要刷xpose框架,和一个什么东西,搜索一下模拟器关闭SSL即可。
来源:CSDN
作者:TAF-MT
链接:https://blog.csdn.net/qq_40258748/article/details/104728673