Python抓取网站数据并下载视频
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/1660-1-1.html',
'Cookie': 'first_h_kp=1689927842258; count_h_kp=1; first_m_kp=1689927842260; count_m_kp=1; __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; first_h_kp=1689930340869; count_h_kp=1; first_m_kp=1689930340870; count_m_kp=1; history=%5B%7B%22name%22%3A%22%E4%BD%A0%E7%9A%84%E5%90%8D%E5%AD%97%22%2C%22pic%22%3A%22https%3A%2F%2Fcdn.yinghuazy.xyz%2Fupload%2Fvod%2F20210219-1%2F5e3b65ef9e6c582f09784d027cfb1923.jpg%22%2C%22link%22%3A%22%2Fdongmanplay%2F1660-1-1.html%22%2C%22part%22%3A%22%E5%85%A8%E9%9B%86%E6%97%A5%E8%AF%AD%22%7D%2C%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; Hm_lpvt_c11e70df18184f7263176ce90c8a9cc3=1689930351; Hm_lpvt_38ea8ed97fbe7c334fcc1878c579e5e0=1689930351; __tins__21589017=%7B%22sid%22%3A%201689930340967%2C%20%22vd%22%3A%206%2C%20%22expires%22%3A%201689932161945%7D; __51laig__=15',
}
response = requests.get(base_url, headers=headers) # 第一次请求
print(response.status_code)
data = response.text
print(data)
# 数据解析, jsonload转换为python格式
json_data = json.loads(data)
print(json_data)
json_list = [json_data] # 将字典放入列表中
print(json_list)
for item in json_list:
print(item) # 打印item字典的内容,查看键和值
if 'ulog_play_url' in item['info']:
video_title = str(item['info']['ulog_rid']) + '.mp4' # 将'ulog_rid'的值转换为字符串类型
video_url = item['info']['ulog_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('下载完成
')
else:
print('没有找到ulog_play_url键')
该代码首先使用 requests 库发送 GET 请求到目标网站,并获取网页内容。然后使用 json.loads() 函数将 JSON 数据解析为 Python 字典,并存储到 json_data 变量中。
接着,代码遍历 json_data 字典,判断是否包含 ulog_play_url 键。如果存在,则使用 requests 库发送 GET 请求到视频地址,并使用 with open() 语句将视频数据写入本地文件。
最后,代码打印下载完成的视频名称。
代码说明:
base_url: 目标网站的 URL 地址headers: 请求头信息,包括 User-Agent、Referer、Cookie 等json_data: 解析后的 JSON 数据,为 Python 字典video_title: 视频文件名称video_url: 视频地址video_data: 视频数据
运行该代码需要安装以下库:
- requests
- moviepy
- beautifulsoup4
代码运行结果:
200
{'code':1,'msg':'获取成功','info':{'ulog_id':1029759,'user_id':20620,'ulog_mid':1,'ulog_type':4,'ulog_rid':4721,'ulog_sid':1,'ulog_nid':1,'ulog_points':0,'ulog_time':1689931833}}
{'code': 1, 'msg': '获取成功', 'info': {'ulog_id': 1029759, 'user_id': 20620, 'ulog_mid': 1, 'ulog_type': 4, 'ulog_rid': 4721, 'ulog_sid': 1, 'ulog_nid': 1, 'ulog_points': 0, 'ulog_time': 1689931833}}
[{'code': 1, 'msg': '获取成功', 'info': {'ulog_id': 1029759, 'user_id': 20620, 'ulog_mid': 1, 'ulog_type': 4, 'ulog_rid': 4721, 'ulog_sid': 1, 'ulog_nid': 1, 'ulog_points': 0, 'ulog_time': 1689931833}}]
{'code': 1, 'msg': '获取成功', 'info': {'ulog_id': 1029759, 'user_id': 20620, 'ulog_mid': 1, 'ulog_type': 4, 'ulog_rid': 4721, 'ulog_sid': 1, 'ulog_nid': 1, 'ulog_points': 0, 'ulog_time': 1689931833}}
没有找到ulog_play_url键
注意:
- 本代码仅供参考,实际使用时需要根据具体情况进行修改。
- 代码中的
base_url、headers和video_url需要根据目标网站的实际情况进行调整。 - 由于目标网站可能随时更改,代码可能无法正常运行,需要根据实际情况进行调试。
- 代码中涉及到
Cookie信息,请谨慎使用,避免泄露个人隐私。 - 爬取网站数据时,请遵守目标网站的 robots.txt 文件和相关协议。
- 请勿使用代码进行任何违法行为。
原文地址: https://www.cveoy.top/t/topic/fRhw 著作权归作者所有。请勿转载和采集!