import requests
import os
import json
from moviepy.editor import VideoFileClip, AudioFileClip
from bs4 import BeautifulSoup

# 数据抓取
base_url = 'http://www.zkk78.com/index.php/user/ajax_ulog/?ac=set&mid=1&id=4721&sid=1&nid=1&type=4'
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.74 Safari/537.36 Edg/99.0.1150.55',
    'Referer': 'http://www.zkk78.com/dongmanplay/4721-1-1.html',
    'Cookie': 'count_h_kp=1; first_h_kp=1689927842258; count_m_kp=1; first_m_kp=1689927842260; __51cke__=; Hm_lvt_38ea8ed97fbe7c334fcc1878c579e5e0=1689927815; Hm_lvt_c11e70df18184f7263176ce90c8a9cc3=1689927817; PHPSESSID=2pnhv3rla9asc5i0l248i8dl83; user_id=20620; user_name=2143552649; group_id=2; group_name=%E9%BB%98%E8%AE%A4%E4%BC%9A%E5%91%98; user_check=b93515cf840072f8df045b0842e31513; user_portrait=%2Fstatic%2Fimages%2Ftouxiang.png; XLA_CI=43a5b7a031caf14cbacec3c121269bcf; history=%5B%7B%22name%22%3A%22%E5%9B%9E%E5%A4%8D%E6%9C%AF%E5%A3%AB%E7%9A%84%E9%87%8D%E6%9D%A5%E4%BA%BA%E7%94%9F%22%2C%22pic%22%3A%22https%3A%2F%2Fpic.rmb.bdstatic.com%2Fbjh%2F377f268028bb09e80035191cd9f15c58.jpeg%22%2C%22link%22%3A%22%2Fdongmanplay%2F4721-1-1.html%22%2C%22part%22%3A%22%E7%AC%AC01%E9%9B%86%22%7D%5D; __tins__21589017=%7B%22sid%22%3A%201689927814622%2C%20%22vd%22%3A%207%2C%20%22expires%22%3A%201689929681755%7D; __51laig__=7; Hm_lpvt_38ea8ed97fbe7c334fcc1878c579e5e0=1689927882; Hm_lpvt_c11e70df18184f7263176ce90c8a9cc3=1689927882',

}

response = requests.get(base_url, headers=headers)  # 第一次请求
print(response.status_code)
data = response.text
print(data)

# 数据解析,json.loads转换为python格式
json_data = json.loads(data)
print(json_data)

# 检查数据结构
if 'info' in json_data and isinstance(json_data['info'], dict) and 'title' in json_data['info'] and 'play_url' in json_data['info']:
    video_title = json_data['info']['title'] + '.mp4'
    video_url = json_data['info']['play_url']
    print(video_title, video_url)

    print('正在下载:', video_title)
    # 第二次请求
    video_data = requests.get(video_url, headers=headers).content
    with open(r'./视频/' + video_title, 'wb') as f:
        f.write(video_data)
        print('下载完成\n')
else:
    print('数据结构不符合预期,请检查数据源。')

代码解析:

  1. 导入必要的库: requests 用于发送 HTTP 请求获取网页数据, json 用于解析 JSON 格式数据, BeautifulSoup 用于解析 HTML/XML 格式数据, moviepy.editor 用于处理视频和音频文件。
  2. 设置请求头: headers 中包含 User-Agent,Referer 和 Cookie 信息,用于模拟浏览器访问,避免被反爬虫机制拦截。
  3. 发送请求获取数据: 使用 requests.get() 方法发送 GET 请求获取网页数据。
  4. 解析数据: 使用 json.loads() 方法将 JSON 格式数据解析成 Python 字典。
  5. 检查数据结构: 确保数据结构符合预期,避免出现 TypeError
  6. 提取视频信息: 从解析后的字典中提取视频标题和链接。
  7. 下载视频: 发送请求获取视频数据,并将数据写入本地文件。

注意:

  • 以上代码仅供学习交流使用,请勿用于非法用途。
  • 爬取网页数据时,请遵守 robots 协议。
  • 网站结构可能会发生变化,导致代码失效,请根据实际情况进行调整。

原文地址: https://www.cveoy.top/t/topic/fRcN 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录