简介
网站是国外的素材网站,Pexels可以帮助设计师,自媒体工作者和所有正在寻找图像的人找到可以在任何地方免费使用的精美照片,当然还有为数不是很多,但质量同样很高的视频素材。
由于此网站是国外的,爬取是需要搭✈️的, 有国外ip的可以使用ip代理。😂
开发工具
环境使用
- Python 3.8 解释器
- Pycharm 编辑器
所使用模块
- import random
- import time
- import os
- import requests
分析实现思路
- 通过搜索风景快速定位到视频
- F12或右键-->检查打开开发者工具
- 选择network-->清除响应数据-->刷新
- 查找到视频所在json数据包,分析链接、请求头以及携带的参数
- 分析数据--> 请求数据--> 解析数据--> 保存数据
代码实现过程
# -*- coding:utf-8 -*-
# @Author:🎈RedBalloon
# @Time:2023/2/17-17:01
# @File:spider.py
import os
import random
import time
import requests
"""采集pexels网站的风景视频"""
headers = {
'content-type': 'application/json',
'referer': 'https://www.pexels.com/zh-cn/search/videos/%E9%A3%8E%E6%99%AF/',
'secret-key': 'H2jk9uKnhRmL6WPwh89zBezWvr',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36',
}
def get_links(n):
try:
url = f'https://www.pexels.com/zh-cn/api/v3/search/videos?page={n}&per_page=24&query=%E9%A3%8E%E6%99%AF&orientation=all&size=all&color=all&seo_tags=true'
response = requests.get(url, headers=headers)
response.raise_for_status()
if response.status_code == 200:
json_data = response.json()
data = json_data['data']
links = []
ids = []
for n in range(len(data)):
video_link = data[n]['attributes']['video']['download']
video_id = data[n]['attributes']['id']
# print(video_id,video_link)
links.append(video_link)
ids.append(video_id)
dict_data = dict(zip(ids, links))
return dict_data
except Exception as e:
print('error: is >>>', e)
def download(dict_data):
# 需要下载视频把注释放开就可
for id, url in dict_data.items():
time.sleep(random.randint(1, 4))
path = "downloads\\"
if not os.path.exists(path):
os.mkdir(path)
content_data = requests.get(url, timeout=500).content
with open(path + str(id) + '.mp4', mode='wb') as f:
f.write(content_data)
print('ok-------', url)
# 只需要链接就放开
# for _ in range(len(name)):
# with open('download_text.txt', mode='a') as f:
# date_f = "{},{}\n".format(name[_], url[_])
# print(date_f)
# f.write(date_f)
if __name__ == '__main__':
for i in range(1, 6):
print(f'===========下载第{i}页=============')
dict_data = get_links(i)
download(dict_data)
运行结果:
风景视频欣赏😀
评论 (0)