requests是一个Python第三方库,用于发送HTTP/1.1请求。它可以用于发送GET、POST、PUT、DELETE等多种类型的HTTP请求,并支持HTTP基本认证、表单处理、Cookie处理、文件上传等功能。使用requests库,可以方便地访问Web API,从而获取数据并进行数据分析、处理等操作。
第一步,获取所要爬取的知乎视频地址列表
第二步,复制上图请求url
第三步,直接上代码进行爬取
import requests
from lxml import etree
url = "https://vdn5.vzuu.com/mediacloud/catchingfire/video/0d8a1f77e91d100c-bfaea50b28f9c249f530f8a8c16528b1-720p_mp4_h265_1.mp4?pkey=AAUM4YmFbz-2abrEqsZ-mPfu5VgU0jPRurp0VKKfCzCZorm8SxzHNBOj8D-dY92lKTjyQ4RAiCMgR8LMwSUSdAPXu830Q%3D&pf=Web&pt=ks"
try:
response = requests.get(url) #对url进行请求
response.raise_for_status() # 检查响应状态码是否为200,如果不是会抛出异常
response.encoding = "utf-8" #设置编码
html = etree.HTML(response.text) # 使用etree解析html
video_response = requests.get(url, stream=True) #发送带有流式传输的get请求
file_path = "C:\\Users\\zhq\\PycharmProjects\\pythonProject\\知乎(视频)\\励志.mp4" # 视频文件保存路径
with open(file_path, "wb") as videofile: # 使用二进制模式打开文件,准备写入视频数据
for chunk in video_response.iter_content(chunk_size=4096): # 遍历响应内容的二进制数据块,每次写入4096个字节到文件中
videofile.write(chunk)
print("视频下载完成!")
except requests.exceptions.RequestException as e:
print("请求异常:", e)
except IOError as e:
print("文件写入错误:", e)
注意:此代码中的url因为用户权限不能进行复制,需自行复制视频url
此后就可以看到该路径文件夹内的内容