python爬虫采集pexels网站关于风景的视频

python爬虫采集pexels网站关于风景的视频

redballoon
2023-02-19 / 0 评论 / 22 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2023年02月20日,已超过36天没有更新,若内容或图片失效,请留言反馈。

简介

网站是国外的素材网站,Pexels可以帮助设计师,自媒体工作者和所有正在寻找图像的人找到可以在任何地方免费使用的精美照片,当然还有为数不是很多,但质量同样很高的视频素材。

由于此网站是国外的,爬取是需要搭✈️的, 有国外ip的可以使用ip代理。😂

Pexels网站的视频页

开发工具

环境使用
  • 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)

运行结果:

Snipaste_2023-02-19_03-46-16.png

风景视频欣赏😀


0

评论 (0)

取消