python - 在 Python 中通过 Selenium 模拟 PhantomJS 上的 HTML5 视频支持

标签 python selenium phantomjs

我正在尝试提取在视频标签中找到的 HTML5 视频的源链接。使用 Firefox webdrive ,我能够得到想要的结果,即 -

[<video class="video-stream html5-main-video" src='myvideoURL..'</video>]

但是如果我使用 PhantomJS -

 <video class="video-stream html5-main-video" style="width: 854px; height: 480px; left: 0px; top: 0px; -webkit-transform: none;" tabindex="-1"></video>

我怀疑这是因为 PhantomJS 缺乏对 HTML5 视频的支持。无论如何我可以欺骗网页认为支持 HTML5 视频以便它生成 URL 吗?或者我可以做点别的吗?

试过了

try:

    WebDriverWait(browser,10).until(EC.presence_of_element_located((By.XPATH, "//video")))


finally:


    k = browser.page_source


    browser.quit()


soup = BeautifulSoup(k,'html.parser')


print (soup.find_all('video'))

最佳答案

Firefox 和 phantomjs webdrivers 与 Selenium 通信的方式完全不同。

当使用 Firefox 时,它会在加载一些 javascript 后返回页面加载完成的信号

在 phantomjs 中不同,它会在 Selenium 能够获取页面源代码后立即向 Selenium 发出页面已完成加载的信号,这意味着它不会加载任何 javascript。

你需要做的是Wait对于在提取元素之前存在的元素,在这种情况下它将是:

video = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, "//video")))

编辑:

Youtube 在决定是否提供源之前首先检查浏览器是否支持视频内容,虽然描述了一个解决方法 here

关于python - 在 Python 中通过 Selenium 模拟 PhantomJS 上的 HTML5 视频支持,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39308447/

相关文章:

python - 使用 Sympy 分离实部和虚部

javascript - 动态 html 和 javascript 函数

java - Selenium 编程 -- 按 F12,现在如何从 Chrome 复制粘贴代码?

java - 如果使用 java webdriver,则不显示不可见链接

python - 使用 Python 在 .submit() 之后搜索 Selenium 中的错误元素

centos - 在服务器上使用/安装库,无需 sudo

javascript - 如何抓取 FIFA 网站的 JavaScript 表格

python - 我可以将任何字符串转换为 float 而不丢失 Python 中的精度吗?

python - 以编程方式更改PDF中文本的字体颜色

javascript - 如何在 phantomjs 中等待元素可见性