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

通过Python中的Selenium在PhantomJS上模拟HTML5视频支持,python,selenium,phantomjs,Python,Selenium,Phantomjs,我正在尝试提取视频标签中找到的HTML5视频的源链接。使用Firefox webdrive,我能够获得预期的结果,即- [<video class="video-stream html5-main-video" src='myvideoURL..'</video>] Firefox和phantomjs Web驱动程序与Selenium的通信方式截然不同 当使用Firefox时,它会在页面加载了一些javascript之后发出信号,表示页面已经完成加载 与phantomjs不同

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

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

Firefox和phantomjs Web驱动程序与Selenium的通信方式截然不同

当使用Firefox时,它会在页面加载了一些javascript之后发出信号,表示页面已经完成加载

与phantomjs不同的是,它向Selenium发出信号,表明页面一旦能够获得页面源代码,就已经完成加载,这意味着它不会加载任何javascript

您需要做的是在提取元素之前将其显示出来,在这种情况下,它将是:

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


Youtube首先检查浏览器是否支持视频内容,然后再决定是否提供源,尽管有描述,但有一个解决方法

你能提供一个链接进行测试吗?@Rafael,我尝试的链接实际上是Youtube视频。我使用了Firefox33,它似乎在检查元素时生成了源URL。对不起,我该如何处理这个视频对象呢。我尝试过(编辑有问题),但仍然得到相同的结果视频对象是选定的元素,您不需要在BeautifulSoup中解析它。但是它应该按照您的方式工作,如果您删除
try
子句,它会返回元素未定位的错误吗?不,它不会返回错误,而是-[]Ie-正是我以前得到的,但是如果它在Phantomjs上工作,您就可以开始了,这不是您想要的吗?编辑:哦,它不会生成URL,是的,这可能是因为PhantomJS没有图形支持。我能做些什么吗?也许是另一款支持HTML5或Flash的无头浏览器?
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'))
video = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, "//video")))