当前位置:   article > 正文

python学习——爬虫(抖音)_python 解析抖音网页版

python 解析抖音网页版

爬虫仅限于知识学习,本代码不得用于任何商业活动侵权,如有不适,请联系博主进行修改或者删除。
今天总结的第三篇,这些个代码是模仿着写出来的,这儿我着重写我觉有用的东西了,一上午过去了,还只弄完三篇,时间好紧张啊。
访问的是https://www.douyin.com/share/user/63692754272的抖音,找到其url,并进行访问
首先摆出源码

import requests
import json
url="https://www.douyin.com/web/api/v2/aweme/like/?user_id=63692754272&sec_uid=&count=21&max_cursor=0&aid=1128&_signature=t.9P0BAd6rId0A9Qpgu2N7f.T8&dytk=102f4e17eb7a0ff33c5500bb284aaeda"
headers={
    'user-agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3676.400 QQBrowser/10.4.3469.400'
}
cookies={
    'cookie':'ga=GA1.2.13243249.1563845400; _gid=GA1.2.1780807193.1566271470; _ba=BA0.2-20190820-5199e-CteeFBBR2NT79iyj4gab'
}
count=1
while True:
    result = requests.get(url, headers=headers)
    result.encoding='utf-8'
    # result1=json.loads(result.text)
    result1=result.json()
    if len(result1.get("aweme_list")) !=0:
        break
    print("访问第{}次".format(count))
    count=count+1
print(result1)
x=0
for i in result1['aweme_list']:
   m=i['video']['download_addr']['uri']
   paqu='https://aweme.snssdk.com/aweme/v1/playwm/?video_id='+m
   # title = i['desc']
   # print(title)
   x+=1
   while True:
       mp4 = requests.get(paqu, headers=headers, stream=True).content
       if mp4!=None:
           break
   open(str(x)+ '.mp4', 'wb').write(mp4)

print('爬取完成')

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35

然后着一进行分析
访问的网址是:https://www.douyin.com/share/user/63692754272/,用访问者的形式进行访问,避免反扒,这是最初级的方式,高级一点的就是再加上cookie,虽然不知道有啥用,感觉加上以后,出错的情况小很多了,解码这儿用的是utf-8

import requests
import json
url="https://www.douyin.com/web/api/v2/aweme/like/?user_id=63692754272&sec_uid=&count=21&max_cursor=0&aid=1128&_signature=t.9P0BAd6rId0A9Qpgu2N7f.T8&dytk=102f4e17eb7a0ff33c5500bb284aaeda"
headers={
    'user-agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3676.400 QQBrowser/10.4.3469.400'
}
cookies={
    'cookie':'ga=GA1.2.13243249.1563845400; _gid=GA1.2.1780807193.1566271470; _ba=BA0.2-20190820-5199e-CteeFBBR2NT79iyj4gab'
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

因为抖音具有一种反扒措施,它这个访问结果不一定会有,需要反复访问,因此我写了个while循环,直到访问到结果

count=1
while True:
    result = requests.get(url, headers=headers)
    result.encoding='utf-8'
    # result1=json.loads(result.text)
    result1=result.json()
    if len(result1.get("aweme_list")) !=0:
        break
    print("访问第{}次".format(count))
    count=count+1
print(result1)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

在这里插入图片描述
将这一条内容放到bejson中进行解析(bejson可以百度找到)
在这里插入图片描述
然后再依据内容,找到我们需要的下载地址,视频的下载,需要使用其视频链接,以二进制、流的形式进行导出

for i in result1['aweme_list']:
   m=i['video']['download_addr']['uri']
   paqu='https://aweme.snssdk.com/aweme/v1/playwm/?video_id='+m
   # title = i['desc']
   # print(title)
   x+=1
   while True:
       mp4 = requests.get(paqu, headers=headers, stream=True).content
       if mp4!=None:
           break
   open(str(x)+ '.mp4', 'wb').write(mp4)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

存在一个未解决的问题,按理来说这儿是可以按照视频名字来命名的,但是程序执行到第四个时,会报错,我将名字换成了数字之后(也就是x),就能正常爬取了,不知道这是啥反扒措施,有大佬能解决的话,欢迎评论区留言。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/577434
推荐阅读
相关标签
  

闽ICP备14008679号