我正在尝试提取视频标记中的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")))
编辑: