打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
『异步反爬』别再说自己不会爬取『抖音』视频了!
Python爬虫数据分析挖掘
四年编程开发经验,专注于python爬虫、数据分析挖掘、数据可视化、python知识教学,分享日常编程学习和接私活过程。每次推文都『录制讲解视频』手撕代码,关注小白,编程快乐。
45篇原创内容
公众号

1

前言

遇到『异步反爬』大家不知道怎么解决!今天就以『抖音』为实战案例,为大家讲解『异步反爬』应该怎么去处理!

同时也教大家怎么去爬取『抖音』视频,看完这篇文章,你以后不要再说:自己不会爬取抖音视频了!

2

准备工作

1.手机端操作

选择其中一个用户(家味美食),进入用户主页,然后点击右上角。

点击分享

复制链接

2.提取链接

提取好的链接如下:

https://v.douyin.com/e8g1kCq/

3

异步分析

1.查看数据包

从上面提取出来的链接是短链接,放到浏览器中运行则变成长链接

- https://v.douyin.com/e8g1kCq/
+ https://www.iesdouyin.com/share/user/77088058644?sec_uid=MS4wLjABAAAAumvAfskbDW1CB77yOudtt4ecmpi3Mkdm8XCkrTfRZPQ&did=70817958123&iid=2463339548275629&app=aweme&utm_campaign=client_share&utm_medium=ios&tt_from=copy&utm_source=copy

找到下面这个数据包

https://www.iesdouyin.com/web/api/v2/aweme/post/?sec_uid=MS4wLjABAAAAumvAfskbDW1CB77yOudtt4ecmpi3Mkdm8XCkrTfRZPQ&count=21&max_cursor=0&aid=1128&_signature=q3mkJgAAyzVDo4ZbT2T9Cqt5pD&dytk=

2.分析链接

分析链接分析,只有三个参数是需要改变的。

+ sec_uid(用户id)
+ count(返回数)最多是34
+ max_cursor(下一页)

3.获取数据

写代码之前先看一下获取的数据有哪些,将链接放到浏览器里去看一下。

+ has_more 判断是否还有下一页
+ max_cursor 作为获取下一页标志
+ aweme_list 存放视频信息

+ aweme_list列表中,desc是对应视频名称
+ video->play_addr->url_list存放着视频mp4地址

下面开始编程实现

headers = {
        'User-Agent''Mozilla/5.0 (Windows NT 6.1; WOW64; rv:53.0) Gecko/20100101 Firefox/53.0',
        'Accept''application/json,text/javascript,*/*; q=0.01',
        'Accept-Language''zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3',
        'Accept-Encoding''gzip,deflate, br',
        'X-Requested-With''XMLHttpRequest',
        'Access-Control-Allow-Origin''*',
        'Connection''keep-alive'
    }
url = 'https://www.iesdouyin.com/web/api/v2/aweme/post/?sec_uid='+str(sec_uid)+'&count='+str(count)+'&max_cursor='+str(max_cursor)+'&aid=1128&_signature=z1epBAAArxEnjYt5fPWXJs9XqR&dytk='
r = requests.get(url, headers=headers)
r.encoding = 'utf-8'
da = json.loads(r.text)
aweme_list  = da['aweme_list']
has_more = da['has_more']

for i in aweme_list:
    title = i['desc']
    video_url = i['video']['play_addr']['url_list'][0]
    print(title)
    print(video_url)

4.下载视频到本地

###下载视频
def down(name,url):
    headers_down = {
        'user-agent''Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3947.100 Safari/537.36',

    }
    r = requests.get(url,headers=headers_down)
    with open('lyc/'+str(name)+'.mp4''wb+'as f:
        f.write(r.content)

定义了一个下载视频的函数,视频最终保存到lyc文件夹中。

4

获取下一页链接

1.下载视频到本地

获取当前页请求返回的max_cursor,替换当前页的max_cursor。

while(has_more):
      url = 'https://www.iesdouyin.com/web/api/v2/aweme/post/?sec_uid='+str(sec_uid)+'&count='+str(count)+'&max_cursor='+str(max_cursor)+'&aid=1128&_signature=z1epBAAArxEnjYt5fPWXJs9XqR&dytk='
      r = requests.get(url, headers=headers)
      r.encoding = 'utf-8'
      da = json.loads(r.text)
      aweme_list  = da['aweme_list']
      has_more = da['has_more']

      for i in aweme_list:
          title = i['desc']
          video_url = i['video']['play_addr']['url_list'][0]
          videotitle_list.append(title)
          down(title,video_url)
          print(title+'-下载完成!')
          videotitle_list = list(set(videotitle_list))
          print(len(videotitle_list))

          if has_more:
              max_cursor = da['max_cursor']
          else:
              break

5

总结

1.获取抖音视频名称和真实mp4播放地址,解决异步反爬问题。

2.解析下一页链接。

3.下载视频到本地。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Python不仅能爬网页还能爬取APP呢!批量爬取抖音视频!最新代码
Fiddler抓取抖音APP视频源
Python实现超简单【抖音】无水印视频批量下载
怎么用Python爬取抖音小视频? 资深程序员都这样爬取的(附源码)
「docker实战篇」python的docker
数据保存!!!Python 爬取网页数据后,三种保存格式
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服