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

使用Python Selenium和BeautifulSoup无法爬取video内嵌套source标签的src属性

问题根源及修复方案

核心错误点

  • 执行顺序错误:在点击播放按钮触发视频加载之前,就已经用BeautifulSoup解析了当前页面源码,此时video标签下的source标签还没有生成src属性值
  • 元素定位错误:直接查找video标签的src,但实际视频地址嵌套在video的子元素source标签的src属性中
  • 语法错误:driver.stop_client、driver.close、driver.quit都是方法,需要加()才会执行,原有写法根本不会关闭浏览器进程
  • 缩进错误:代码多处缩进不符合Python规范,会直接触发语法错误

修复后代码

from selenium import webdriver
from bs4 import BeautifulSoup
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 目标地址
url = "https://bestdubbedanime.com/Demon-Slayer-Kimetsu-no-Yaiba/26"

# 启动Firefox驱动
driver = webdriver.Firefox()
driver.get(url)

# 等待播放按钮可点击后点击,触发视频加载
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, ".playostki"))).click()      

# 等待video标签下的source标签加载完成,再解析页面
WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.CSS_SELECTOR, "video#my_video_1_html5_api source")))
soup1 = BeautifulSoup(driver.page_source, 'html.parser')

# 定位source标签提取src
source_tag = soup1.find('video', id='my_video_1_html5_api').find('source')
video_src = source_tag.get('src')
print("提取到的视频地址:", video_src)

# 正确关闭驱动
driver.stop_client()
driver.close()
driver.quit()

补充说明

如果提取到的src是相对路径,自行拼接站点域名即可得到完整可访问的视频地址。部分站点会做视频地址的动态签名校验,直接访问可能存在有效期限制。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 14:45:04