尽管等待,Selenium 仍未加载完整的动态 html 网页
Selenium not loading full dynamic html webpage despite waiting
我正在尝试加载 YouTube 频道的视频页面并解析它以提取最近的视频信息。我想避免使用 API,因为它有每日使用配额。
我遇到的问题是 Selenium 在打印“driver.pagesource”时似乎没有加载完整的 html 网页:
from bs4 import BeautifulSoup
from selenium.webdriver import Chrome
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.chrome.options import Options
driver = Chrome(executable_path='chromedriver')
driver.get('https://www.youtube.com/c/Oxylabs/videos')
# Agree to youtube cookie popup
try:
consent = driver.find_element_by_xpath(
"//*[contains(text(), 'I agree')]")
consent.click()
except:
pass
# Parse html
WebDriverWait(driver,100).until(EC.visibility_of_element_located((By.XPATH, '//*[@id="show-more-button"]')))
print(driver.page_source)
我已尝试实现 WebDriverWait,如上所示。这会导致超时异常错误。但是,下面的xpath(/html - 网页结尾)不会导致超时异常:
WebDriverWait(driver,100).until(EC.visibility_of_element_located((By.XPATH, '/html')))
-但这也不会加载完整的 html。
我还尝试实现 time.sleep(100) 而不是 WebDriverWait,但这也会导致 html 不完整。任何帮助将不胜感激。
您要查找的元素不在页面上,这是超时的原因:
//*[@id="show-more-button"]
您是否尝试过滚动到页面底部或寻找其他元素??
driver.execute_script("arguments[0].scrollIntoView();", element)
我正在尝试加载 YouTube 频道的视频页面并解析它以提取最近的视频信息。我想避免使用 API,因为它有每日使用配额。 我遇到的问题是 Selenium 在打印“driver.pagesource”时似乎没有加载完整的 html 网页:
from bs4 import BeautifulSoup
from selenium.webdriver import Chrome
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.chrome.options import Options
driver = Chrome(executable_path='chromedriver')
driver.get('https://www.youtube.com/c/Oxylabs/videos')
# Agree to youtube cookie popup
try:
consent = driver.find_element_by_xpath(
"//*[contains(text(), 'I agree')]")
consent.click()
except:
pass
# Parse html
WebDriverWait(driver,100).until(EC.visibility_of_element_located((By.XPATH, '//*[@id="show-more-button"]')))
print(driver.page_source)
我已尝试实现 WebDriverWait,如上所示。这会导致超时异常错误。但是,下面的xpath(/html - 网页结尾)不会导致超时异常:
WebDriverWait(driver,100).until(EC.visibility_of_element_located((By.XPATH, '/html')))
-但这也不会加载完整的 html。 我还尝试实现 time.sleep(100) 而不是 WebDriverWait,但这也会导致 html 不完整。任何帮助将不胜感激。
您要查找的元素不在页面上,这是超时的原因:
//*[@id="show-more-button"]
您是否尝试过滚动到页面底部或寻找其他元素??
driver.execute_script("arguments[0].scrollIntoView();", element)