You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

带=$0标记的动态HTML标签无法被BeautifulSoup解析,如何获取视频src?

解决方法汇总

一、修复你的Selenium代码(直接获取video的src)

你之前的代码有两个核心问题:

  • 新版Selenium已废弃executable_path参数,必须用Service对象替代
  • 你打印的是video.text,但video标签本身没有文本内容,要获取的是它的src属性;另外页面加载需要时间,直接查找元素可能还没渲染完成,得加等待逻辑

修复后的代码:

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

DRIVER_PATH = '/path/to/chromedriver'
# 初始化Service对象适配新版Selenium
service = Service(executable_path=DRIVER_PATH)
driver = webdriver.Chrome(service=service)

try:
    driver.get("https://mplayer.me/default.php?id=MTc3ODc3")
    # 最多等待10秒,直到video元素加载完成
    video = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.TAG_NAME, "video"))
    )
    # 获取视频的src属性
    print(video.get_attribute("src"))
finally:
    driver.quit()

二、通过解析页面内的JSON配置获取视频链接(无需Selenium)

这类视频网站通常会把视频信息放在页面的script标签里,你可以用BeautifulSoup提取配置内容,再解析JSON拿到链接,步骤如下:

  1. 用requests请求页面源码
  2. 定位包含播放器配置的script标签(一般带有window.playerConfig这类变量)
  3. 提取标签内的JSON片段,用json模块解析
  4. 从解析后的字典中找到视频src地址

示例代码:

import requests
from bs4 import BeautifulSoup
import json

url = "https://mplayer.me/default.php?id=MTc3ODc3"
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36"
}

response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.text, "html.parser")

# 遍历所有script标签,找到包含播放器配置的内容
for script in soup.find_all("script"):
    if "playerConfig" in script.text:
        # 截取JSON部分(根据实际页面内容调整截取逻辑)
        config_text = script.text.split("window.playerConfig = ")[1].split(";")[0]
        config = json.loads(config_text)
        # 从配置字典中提取视频地址,具体路径需根据实际JSON结构调整,示例路径如下
        video_src = config['playlist'][0]['sources'][0]['file']
        print(video_src)
        break

提示:你可以打开目标网站的开发者工具,在控制台输入window.playerConfig查看完整的JSON结构,确认视频地址的具体路径。

原代码输出空白的原因

video标签本身没有文本内容,所以video.text自然为空,你需要用get_attribute("src")获取视频链接;另外页面加载需要时间,直接查找元素时可能还没渲染完成,所以必须添加等待逻辑。

内容的提问来源于stack exchange,提问作者Boros

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 18:25:39