Can do local test with html code you have posted.
local3.html
<!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <title>Test site</title> <head/> <body> <p id='foo'>hello world</p> <div id="container" > <div tableindex= -1> <video id="my_video_1_html5_api" class="vjs-tech" controlslist="nodownload" preload="auto" poster="https://vs02.520call.me/files/mp4/f/ttttt.jpg" <source src="https://vs02.520call.me/files/mp4/f/fwnOT.m3u8?t=1234444” type="application/vnd.apple.mpegurl"></video> </body> </html>
from selenium import webdriver from selenium.webdriver.chrome.options import Options #--| Setup options = Options() #options.add_argument("--headless") browser = webdriver.Chrome(executable_path=r'C:\cmder\bin\chromedriver.exe', options=options) #--| Parse or automation browser.get('file:///E:/div_code/scrape/local3.html') p_tag = browser.find_elements_by_id('foo') print(p_tag[0].text) video_tag = browser.find_elements_by_xpath('//*[@id="my_video_1_html5_api"]') print(video_tag)
Output:hello world
[<selenium.webdriver.remote.webelement.WebElement (session="1a81b871d83bdeb1e947cc8f1a074be6", element="cdf7afaf-c573-4f49-aee8-66bd8a4d3b40")>]
So it work the video tag will have no text have to use get_attribute
to get info out.>>> video_tag [<selenium.webdriver.remote.webelement.WebElement (session="1a81b871d83bdeb1e947cc8f1a074be6", element="cdf7afaf-c573-4f49-aee8-66bd8a4d3b40")>] >>> video_tag[0].text '' >>> >>> video_tag[0].get_attribute('src') 'https://vs02.520call.me/files/mp4/f/fwnOT.m3u8?t=1234444%E2%80%9D%20%20type=' >>> video_tag[0].get_attribute('poster') 'https://vs02.520call.me/files/mp4/f/ttttt.jpg