一、实验内容

用Python爬取抖音网页版不可下载的视频并保存下来。

二、实验过程与结果

1、自己需要了解的内容

       要爬取数据,网页版抖音无法下载。而我们要知道,一个网站播放视频,比如你在浏览器输入抖音并回车,那么就会发起请求。需要的url,就是网络资源定位符,web服务器获取数据,要判断是不是一个正确的请求,请求的是什么,视频url返回前端,web服务器把数据再传输给浏览器就可以播放了。

2、编写代码与分析

(1)首先我需要的库是requests库

python sudo Python苏东伟_Python

 

我在终端用pip重新安装了库

(2)创建一个文件夹并打开

(3)对于网站的分析

打开网页版抖音并打开视频

python sudo Python苏东伟_ide_02

 

 接着用浏览器自带的F12检查

python sudo Python苏东伟_ide_03

 

 打开发现是没有请求的,这里再次刷新网页

python sudo Python苏东伟_python sudo_04

 

 在网络里面可以看到很多的请求

python sudo Python苏东伟_3D_05

 

 可以看到是get请求,response headers是响应头

 

python sudo Python苏东伟_Python_06

 

request headers是请求头

python sudo Python苏东伟_ide_07

 

 

 cookie可以理解为是保存信息,账号密码,登陆状态

python sudo Python苏东伟_python sudo_08

 

 user-agent是我的基本信息,代表正常用户,可以看到我是Win10系统,64位之类,也会有浏览器信息

我们在media里可以找到存放视频的地址

python sudo Python苏东伟_ide_09

 

 这是我所需要的复制下来,再次确认,复制后在浏览器打开

python sudo Python苏东伟_Python_10

 

 视频资源地址正确,类型是MP4文件

python sudo Python苏东伟_ide_11

 

 

(4)写代码

导包

python sudo Python苏东伟_ide_12

 

 发起请求后,接收,判断正常会返回数据

python sudo Python苏东伟_Python_13

 

 复制进去,给对象res,发起get请求响应给到res

python sudo Python苏东伟_Python_14

 

 请求头,因为我是爬虫程序,所以要伪装成一个正常用户

python sudo Python苏东伟_ide_15

 

 

python sudo Python苏东伟_Python_16

 

 我的电脑信息

python sudo Python苏东伟_ide_17

 

 需要referer-从哪跳转过来,注意冒号那里,电脑信息后要有逗号

python sudo Python苏东伟_3D_18

 

 这里很重要,会打开一个鸡蛋布丁文件,用来写入数据,如果没有这个文件会创建一个,如果有,就会覆盖里面的内容

python sudo Python苏东伟_Python_19

 

 res.content二进制,视频是二进制

3、运行及结果

(1)运行正常

python sudo Python苏东伟_python sudo_20

 

 

python sudo Python苏东伟_ide_21

 

 可以看到已经有这个文件,接下来看是否爬取成功

python sudo Python苏东伟_ide_22

 

 已经保存至本地了,说明爬取成功

(2)使用华为云服务器

配置好后开机

python sudo Python苏东伟_ide_23

 

 远程登录

python sudo Python苏东伟_ide_24

 

 登录winscp连接到主机,因为我之前在vscode运行过,已经爬取了视频,所以先把爬取的视频删除,确保文件夹只有程序后,传到主机里

python sudo Python苏东伟_python sudo_25

 


 

python sudo Python苏东伟_ide_26

 

 接下来找到程序并运行

python sudo Python苏东伟_Python_27

 

 已经运行成功,并且在左边看见文件夹已经有了视频

python sudo Python苏东伟_python sudo_28

 

 刷新后也可以看见已经爬取视频,拖到桌面或者文件夹就可以了,关机。

三、实验代码

import requests #导包
url = ' https://v26-web.douyinvod.com/a19e70c43bd6e11067eb83ab419ffe77/629571c5/video/tos/cn/tos-cn-ve-15/743a6bed804a48e7adb9b4a7947efc80/?a=6383&ch=26&cr=0&dr=0&lr=all&cd=0%7C0%7C0%7C0&cv=1&br=1221&bt=1221&cs=0&ds=4&ft=X1nbLXvvBQ3AUq8yq8Z.wNnOYZlc9PmrF2bLU~AGNiZm&mime_type=video_mp4&qs=0&rc=MzxnNTg1ODUzZTU8aWlkOEBpajdlbDZycHNmdzMzZWkzM0BhMzQwMTNjNi0xMi9hLy02YSNva2dpaC5jMV5fLS0vLTBzcw%3D%3D&l=202205310837080101511902324648AAD9'
#视频存放地址需要自己找,注意抖音视频存放地址反爬,一段时间就会失效
headers = {#自己电脑信息,跳转,用来伪装
   'User-Agent':' Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36 SLBrowser/8.0.0.4153 SLBChan/33',
   'Referer':' https://v26-web.douyinvod.com/a19e70c43bd6e11067eb83ab419ffe77/629571c5/video/tos/cn/tos-cn-ve-15/743a6bed804a48e7adb9b4a7947efc80/?a=6383&ch=26&cr=0&dr=0&lr=all&cd=0%7C0%7C0%7C0&cv=1&br=1221&bt=1221&cs=0&ds=4&ft=X1nbLXvvBQ3AUq8yq8Z.wNnOYZlc9PmrF2bLU~AGNiZm&mime_type=video_mp4&qs=0&rc=MzxnNTg1ODUzZTU8aWlkOEBpajdlbDZycHNmdzMzZWkzM0BhMzQwMTNjNi0xMi9hLy02YSNva2dpaC5jMV5fLS0vLTBzcw%3D%3D&l=202205310837080101511902324648AAD9'
}#注意格式,否则无法运行。这两个是在视频地址网页检查进行查找,找错也无法爬取。
res = requests.get(url,headers)#给对象res,发起get请求响应给到res
with open('鸡蛋布丁.mp4','wb') as f: #打开一个鸡蛋布丁文件,用来写入数据,如果没有这个文件会创建一个,如果有,就会覆盖里面的内容
    f.write(res.content)# res.content二进制,视频是二进制

四、实验中的问题

1、刚开始找不到正确的url地址,多次检查找到。

2、出现无法运行的问题,发现是User-Agent后面没有逗号。

3、还有一个无法运行的问题是在发起请求那一行,将headers=headers改成了headers。

4、上传的华为云主机后,不会运行。在寻求同学的帮助后,输入python3运行python程序。

5、发现有mp4文件,但是没有爬到视频。是因为抖音视频存放地址一直在变换,过段时间就会失效。还有正确的referer。

五、全课总结


总结与体会:当初选Python课,是因为对此非常感兴趣。语法简单,而且可调用的库有很多。Python是一种解释语言,开发效率高。老师讲课有趣且随和,课堂上互动很多,给学生亲切的感觉。第一节课进行了Python的环境配置与安装。后面的课程进度较快,由于之前没有接触过编程,学习起来也是有困难。学习了小游戏,Socket套接字,还有爬虫。让我了解到了Python的实用性,在几次实验中碰到了许许多多的问题,向同学请教,上网查阅,扩宽了知识面,写代码的过程中,显现出来的问题很多,一次次实践让我学到了不少解决问题的方法。而Python与我们的生活结合度也很高,不只是简简单单写点小程序。作为初学者,我只学到了浅层的一点知识,希望在以后可以深入学习。王老师授课非常的高效,不是只将知识,而是把更多的时间让学生自己去练习写代码,在写的过程中发现问题,逐步理解概念,掌握知识,并学会自己多去问去查。知识太多我没有全部理解,但已经学到了不少知识。知识的学习都是由浅入深的,先掌握基础,再根据自己的目标去练习,才会有效果。不断练习,量变到质变的过程。只有在敲代码的过程中才会遇到自己的问题,解决了就提升了。我对Python的学习也仅仅只是它的基础方面,但Python的强大,却是足足地吸引着我,希望自己能够在不断地学习中,将Python学习的更加好。