微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

模仿通过Python中的Selenium使用的PhantomJS上的HTML5视频支持

我正在尝试提取视频标记中的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发出信号,表示页面已经完成加载,只要它能够获取页面源,这意味着它不会加载任何javascript.

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

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

编辑:

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐