当前位置: 首页 > 知识库问答 >
问题:

使用selenium获取当前视频标记URL

黄磊
2023-03-14
from selenium import webdriver


driver = webdriver.Chrome()
driver.get('https://www.youtube.com/watch?v=9x6YclsLHN0')

video = driver.find_element_by_tag_name('video')
url = driver.execute_script("return arguments[0].currentSrc;", video)
print url

driver.quit()
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

wait = WebDriverWait(driver, 5)
video = wait.until(EC.visibility_of_element_located((By.TAG_NAME, 'video')))

我也非常肯定currentsrc应该可以工作,因为如果我在控制台中执行代码并手动等待视频开始,我会看到它正在打印videecurrentsrc属性值。

仅供参考,也尝试了java绑定,结果相同,一个空字符串:

WebDriver driver = new ChromeDriver();
driver.get("https://www.youtube.com/watch?v=9x6YclsLHN0");

WebElement video = driver.findElement(By.tagName("video"));

JavascriptExecutor js = (JavascriptExecutor) driver;
String url = (String) js.executeScript("return arguments[0].currentSrc;", video);

System.out.println(url);

共有1个答案

葛承嗣
2023-03-14

根据W3视频标签规范:

currentSrc DOM属性最初是空字符串。其值由资源选择算法更改。

它解释了问题中描述的行为。这也意味着要可靠地获取currentsrc值,我们需要等到定义了媒体资源。

driver.set_script_timeout(10) 

url = driver.execute_async_script("""
    var video = arguments[0],
        callback = arguments[arguments.length - 1];

    video.addEventListener('loadstart', listener);

    function listener() {
        callback(video.currentSrc);
    };
""", video)
print(url)
 类似资料:
  • 我正在开发一个Android视频应用程序,我需要在暂停模式下获取当前显示的视频帧号。 我需要向我的服务器发送当前在视频中暂停的帧号,并返回关于该帧/时间的项目列表,现在我正在以毫秒为单位发送当前暂停的时间,但它不能很好地工作,因为服务器比较发送到它计算出具体的帧,基于时间,但有时比较并不精确。 我知道如果你使用MediaMetaDataRetriever,你可以从那个帧中得到一个位图,我做到了,但

  • 问题内容: 我正在尝试获取当前打开页面的URL。我正在使用Selenium WebDriver和Java。 我正在通过以下方式访问当前URL: 但是,该URL似乎并未真正反映我当前所在的位置。 我当前的测试用例涉及到NYT网站,然后单击“技术”链接。但是,无论地址栏中显示的URL如何,始终显示为。 我如何实际访问地址栏中的URL值,以便知道实际在哪个页面上? 问题答案: 睡吧 它会工作。我努力了。

  • 我正在尝试获取当前打开页面的URL。我正在使用Selenium WebDriver和Java。 我正在通过以下方式访问当前URL: 然而,URL似乎并没有实际反映我当前的位置。 我如何实际访问地址栏中的URL值,这样我就可以知道我实际在哪个页面上了?

  • 我使用selenium获取网页,并发送kenword获取新页面。但是我怎样才能获得新的网页,并搜索我需要的信息呢 请原谅我没有使用降价。我的问题是:我想在搜索关键词后获得网页,但我编写了浏览器。page_源码,它是百度的主页

  • 我正在尝试使用Python和Selenium获取此元素。 这就是我所尝试的: 我做错了什么?

  • 我试图使用Twitter API从给定的推文导入视频。但是,当我使用终结点时,它不会像返回图像那样返回视频的任何扩展实体,而是返回一个链接到嵌入有视频播放器的视频容器的url实体,该视频容器包含一个指向视频的模糊链接。 以下是一个例子: 我正试图在 使用推特应用编程接口的endpoint和推特id,我得到这样的响应: 遵循URL后,视频标签的来源为