微博视频下载

video_urls 获取xpath://video/@src|//video/@autoplay

# !/usr/bin/python3
# -*- coding:utf-8 -*-
"""
@author: JHC000abc@gmail.com
@file: demo1.py
@time: 2024/6/3 18:00
@desc:

"""
import os
import re
import requests
from urllib.parse import unquote

video_urls = """
//f.video.weibocdn.com/o0/zKaeA2tblx08gbCvECPu01041200IOoj0E010.mp4?label=mp4_720p&template=1280x720.25.0&media_id=5052810367008865&tp=8x8A3El:YTkl0eM8&us=0&ori=1&bf=4&ot=h&lp=1627bfY897x0uXgBMWir7m&ps=mZ6WB&uid=7epJGb&ab=,3601-g29,3601-g36,8013-g0,3601-g29&Expires=1720171780&ssig=8qWxUtq8yo&KID=unistore,video
//f.video.weibocdn.com/u0/9wDNW1Vbgx08g6G0UMUw010412006JcC0E010.mp4?label=mp4_720p&template=1280x720.25.0&media_id=5051678257250342&tp=8x8A3El:YTkl0eM8&us=0&ori=1&bf=4&ot=h&lp=1627bfY897x0uXgBMWir7m&ps=mZ6WB&uid=7epJGb&ab=,8013-g0,3601-g29,3601-g19&Expires=1720171780&ssig=9M9pGiLdMH&KID=unistore,video
//f.video.weibocdn.com/o0/gt0Ytfoqlx08gaji3S0M01041200aSUW0E010.mp4?label=mp4_720p&template=720x1280.24.0&media_id=5052514500804658&tp=8x8A3El:YTkl0eM8&us=0&ori=1&bf=4&ot=v&lp=1627bfY897x0uXgBMWir7m&ps=mZ6WB&uid=7epJGb&ab=,3601-g19,3601-g36,8013-g0,3601-g19&Expires=1720171780&ssig=qwN8M8Cyc9&KID=unistore,video
//f.video.weibocdn.com/o0/zKaeA2tblx08gbCvECPu01041200IOoj0E010.mp4?label=mp4_720p&template=1280x720.25.0&media_id=5052810367008865&tp=8x8A3El:YTkl0eM8&us=0&ori=1&bf=4&ot=h&lp=1627bfY897x0uXgBMWir7m&ps=mZ6WB&uid=7epJGb&ab=,3601-g29,3601-g36,8013-g0,3601-g29&Expires=1720171780&ssig=8qWxUtq8yo&KID=unistore,video
//f.video.weibocdn.com/u0/9wDNW1Vbgx08g6G0UMUw010412006JcC0E010.mp4?label=mp4_720p&template=1280x720.25.0&media_id=5051678257250342&tp=8x8A3El:YTkl0eM8&us=0&ori=1&bf=4&ot=h&lp=1627bfY897x0uXgBMWir7m&ps=mZ6WB&uid=7epJGb&ab=,8013-g0,3601-g29,3601-g19&Expires=1720171780&ssig=9M9pGiLdMH&KID=unistore,video
//f.video.weibocdn.com/o0/6E1OuJczlx08ga4CWyUE010412004Kk00E010.mp4?label=mp4_720p&template=576x1024.24.0&media_id=5052461132480572&tp=8x8A3El:YTkl0eM8&us=0&ori=1&bf=4&ot=v&lp=1627bfY897x0uXgBMWir7m&ps=mZ6WB&uid=7epJGb&ab=,8013-g0,3601-g29,3601-g32,3601-g29&Expires=1720171780&ssig=LWQX1Q3kIo&KID=unistore,video
//f.video.weibocdn.com/o0/gt0Ytfoqlx08gaji3S0M01041200aSUW0E010.mp4?label=mp4_720p&template=720x1280.24.0&media_id=5052514500804658&tp=8x8A3El:YTkl0eM8&us=0&ori=1&bf=4&ot=v&lp=1627bfY897x0uXgBMWir7m&ps=mZ6WB&uid=7epJGb&ab=,3601-g19,3601-g36,8013-g0,3601-g19&Expires=1720171780&ssig=qwN8M8Cyc9&KID=unistore,video
//f.video.weibocdn.com/o0/LqQe1kzclx08gb0rhsQ001041200BOy30E010.mp4?label=mp4_720p&template=1280x720.25.0&media_id=5052670554079256&tp=8x8A3El:YTkl0eM8&us=0&ori=1&bf=4&ot=h&lp=1627bfY897x0uXgBMWir7m&ps=mZ6WB&uid=7epJGb&ab=,3601-g19,3601-g36,8013-g0,3601-g19&Expires=1720171780&ssig=GC11nHcWrX&KID=unistore,video
//f.video.weibocdn.com/o0/n9USvUA4lx08gb0R1LsQ01041200alO80E010.mp4?label=mp4_720p&template=1280x720.25.0&media_id=5052674530541583&tp=8x8A3El:YTkl0eM8&us=0&ori=1&bf=4&ot=h&lp=1627bfY897x0uXgBMWir7m&ps=mZ6WB&uid=7epJGb&ab=,8012-g2,8013-g0,3601-g29&Expires=1720171780&ssig=KOc88BIlZA&KID=unistore,video
//f.video.weibocdn.com/o0/6E1OuJczlx08ga4CWyUE010412004Kk00E010.mp4?label=mp4_720p&template=576x1024.24.0&media_id=5052461132480572&tp=8x8A3El:YTkl0eM8&us=0&ori=1&bf=4&ot=v&lp=1627bfY897x0uXgBMWir7m&ps=mZ6WB&uid=7epJGb&ab=,8013-g0,3601-g29,3601-g32,3601-g29&Expires=1720171780&ssig=LWQX1Q3kIo&KID=unistore,video
//f.video.weibocdn.com/o0/gt0Ytfoqlx08gaji3S0M01041200aSUW0E010.mp4?label=mp4_720p&template=720x1280.24.0&media_id=5052514500804658&tp=8x8A3El:YTkl0eM8&us=0&ori=1&bf=4&ot=v&lp=1627bfY897x0uXgBMWir7m&ps=mZ6WB&uid=7epJGb&ab=,3601-g19,3601-g36,8013-g0,3601-g19&Expires=1720171780&ssig=qwN8M8Cyc9&KID=unistore,video
//f.video.weibocdn.com/o0/LqQe1kzclx08gb0rhsQ001041200BOy30E010.mp4?label=mp4_720p&template=1280x720.25.0&media_id=5052670554079256&tp=8x8A3El:YTkl0eM8&us=0&ori=1&bf=4&ot=h&lp=1627bfY897x0uXgBMWir7m&ps=mZ6WB&uid=7epJGb&ab=,3601-g19,3601-g36,8013-g0,3601-g19&Expires=1720171780&ssig=GC11nHcWrX&KID=unistore,video
//f.video.weibocdn.com/o0/zJuWIWXKlx08ga81eflK010412003zdR0E010.mp4?label=mp4_720p&template=576x1024.24.0&media_id=5052473094897696&tp=8x8A3El:YTkl0eM8&us=0&ori=1&bf=4&ot=v&lp=1627bfY897x0uXgBMWir7m&ps=mZ6WB&uid=7epJGb&ab=,3601-g29,3601-g36,8013-g0,3601-g29&Expires=1720171780&ssig=cjLfJlLX%2Fw&KID=unistore,video
//f.video.weibocdn.com/o0/n9USvUA4lx08gb0R1LsQ01041200alO80E010.mp4?label=mp4_720p&template=1280x720.25.0&media_id=5052674530541583&tp=8x8A3El:YTkl0eM8&us=0&ori=1&bf=4&ot=h&lp=1627bfY897x0uXgBMWir7m&ps=mZ6WB&uid=7epJGb&ab=,8012-g2,8013-g0,3601-g29&Expires=1720171780&ssig=KOc88BIlZA&KID=unistore,video
//f.video.weibocdn.com/o0/En7smZPNlx08gaAb2CSI01041200yNl60E010.mp4?label=mp4_720p&template=720x960.24.0&media_id=5052576412926010&tp=8x8A3El:YTkl0eM8&us=0&ori=1&bf=4&ot=v&lp=1627bfY897x0uXgBMWir7m&ps=mZ6WB&uid=7epJGb&ab=,8013-g0,3601-g29,3601-g32,3601-g29&Expires=1720171780&ssig=%2BGqaB%2FC28h&KID=unistore,video
//f.video.weibocdn.com/o0/g6473TnUlx08gaBgZYsw01041200hdZ90E010.mp4?label=mp4_720p&template=1280x720.25.0&media_id=5052580477468697&tp=8x8A3El:YTkl0eM8&us=0&ori=1&bf=4&ot=h&lp=1627bfY897x0uXgBMWir7m&ps=mZ6WB&uid=7epJGb&ab=,3601-g19,3601-g36,8013-g0,3601-g19&Expires=1720171780&ssig=37RdF2I2tI&KID=unistore,video

"""

for i in video_urls.split("\n"):
    i = i.strip()
    if i:
        try:
            host = re.findall("(.*?)/o0/", i)[0]
            if host.startswith("//"):
                host = f"https:{host}"

            video_id = re.findall("/o0/(.*?).mp4", i)[0]
            ssig = unquote(re.findall("ssig=(.*?)&", i)[0])
            Expire = re.findall("Expires=(.*?)&", i)[0]
        except:
            pass
        else:
            print(video_id, ssig, Expire)
            headers = {
                "Referer": "https://weibo.com/",
                "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36",
            }
            url = f"{host}/o0/{video_id}.mp4"
            params = {
                "Expires": f"{Expire}",
                "ssig": f"{ssig}",
                "KID": "unistore,video"
            }

            response = requests.get(url, headers=headers, params=params)

            # print(response.text)
            print(response)
            os.makedirs("videos", exist_ok=True)
            with open(f"videos/{video_id}.mp4", "wb") as fp:
                fp.write(response.content)

### 解决微博视频下载时出现的403 Forbidden错误 当尝试通过程序访问某些网站资源,如微博视频时,服务器可能会返回`403 Forbidden`状态码。这通常意味着请求被拒绝,原因可能是未授权、IP地址受限或其他安全策略所致。 对于微博视频下载过程中遇到的403错误,可以采取如下措施来提高成功率: #### 1. 使用合法有效的User-Agent头信息 许多Web服务会对来自特定浏览器或设备类型的HTTP请求给予不同对待。模拟常见的桌面版浏览器发送请求有助于绕过部分防护机制。 ```python import urllib.request url = "https://weibo.com/path/to/video" headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36' } req = urllib.request.Request(url=url, headers=headers) response = urllib.request.urlopen(req) ``` #### 2. 添加Referer字段 有些站点还会验证referer参数以确认链接来源合法性。适当设置该值可帮助规避此类检测。 ```python headers['Referer'] = "https://weibo.com/" ``` #### 3. 处理Cookies 登录状态下获取的内容往往更加稳定可靠。利用cookies保持会话连续性,模仿真实用户的操作行为。 ```python from http.cookiejar import CookieJar cj = CookieJar() opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cj)) urllib.request.install_opener(opener) # 发送带cookie的请求... ``` #### 4. 尝试其他API接口或者第三方库 如果官方提供的公开API无法满足需求,则考虑是否存在非正式但稳定的替代方案;另外也可以借助专门用于社交媒体数据采集的Python包,例如`selenium`自动化工具或是基于Node.js开发的服务端渲染引擎Puppeteer等[^2]。 以上方法并非绝对有效,在实际应用前还需充分了解目标平台的相关规定并尊重其隐私政策和服务条款。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值