Python中如何抓取腾讯视频数据?
怎么腾讯视频最近的更新量少了很多,爬虫抓取正常,是腾讯改变视频的策略了么?
Python中如何抓取腾讯视频数据?
1 回复
import requests
import json
import re
def get_tx_video_info(vid):
"""
获取腾讯视频信息
vid: 视频ID(如:k0012e3q4x5)
"""
# 构造API请求URL
api_url = f"https://vv.video.qq.com/getinfo?vids={vid}&platform=101001&charge=0&otype=json"
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36',
'Referer': 'https://v.qq.com/'
}
try:
# 发送请求
response = requests.get(api_url, headers=headers, timeout=10)
response.raise_for_status()
# 处理返回数据(返回的是JSONP格式)
raw_text = response.text
json_str = re.search(r'QZOutputJson=(.*);$', raw_text).group(1)
data = json.loads(json_str)
# 提取关键信息
if data.get('vl'):
video_info = {
'title': data['vl']['vi'][0]['ti'],
'duration': data['vl']['vi'][0]['td'],
'vid': vid,
'play_url': f"https://v.qq.com/x/cover/{vid}.html"
}
return video_info
except Exception as e:
print(f"获取视频信息失败: {e}")
return None
def get_video_urls(vid):
"""
获取视频播放地址(需要解析key)
"""
# 获取视频信息
info = get_tx_video_info(vid)
if not info:
return None
# 构造播放地址请求
api_url = f"https://vv.video.qq.com/getkey?format=json&vid={vid}&platform=101001"
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36',
'Referer': f'https://v.qq.com/x/cover/{vid}.html'
}
try:
response = requests.get(api_url, headers=headers, timeout=10)
data = response.json()
if data.get('key'):
# 这里需要根据实际返回结构解析播放地址
# 实际应用中可能需要进一步处理
return {
'title': info['title'],
'vid': vid,
'key': data['key']
}
except Exception as e:
print(f"获取播放地址失败: {e}")
return None
# 使用示例
if __name__ == "__main__":
# 示例视频ID(需要替换为实际ID)
test_vid = "k0012e3q4x5"
# 获取视频信息
video_info = get_tx_video_info(test_vid)
if video_info:
print("视频信息:")
print(f"标题: {video_info['title']}")
print(f"时长: {video_info['duration']}秒")
print(f"播放页面: {video_info['play_url']}")
# 获取播放地址
play_info = get_video_urls(test_vid)
if play_info:
print(f"\n播放密钥: {play_info.get('key')}")
核心要点:
- 腾讯视频数据主要通过其内部API获取,需要模拟正常浏览器请求
- 关键参数是视频ID(vid),通常可以从视频页面URL中提取
- 需要设置正确的请求头,特别是User-Agent和Referer
- 返回数据通常是JSONP格式,需要正则提取JSON部分
- 实际播放地址需要额外的密钥(key)请求
注意: 实际播放地址的获取更复杂,涉及多个API调用和参数解析,且腾讯视频会定期更新其反爬机制。此代码仅展示基础信息获取流程。
建议: 优先使用官方API或SDK。

