我正在尝试提取视频标记中的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 举报,一经查实,本站将立刻删除。