使用 Selenium 解析动态加载的网页
Parsing a dynamically loaded webpage with Selenium
我正在尝试在 Python 中使用 Selenium 解析 https://www.flashscore.com/football/albania/,但我的网络驱动程序通常不等待乐谱加载完成。
代码如下:
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
driver = webdriver.Firefox()
driver.get("https://www.flashscore.com/football/albania/")
try:
WebDriverWait(driver, 100).until(
lambda s: s.execute_script("return jQuery.active == 0"))
print(driver.page_source)
finally:
driver.quit()
有时,这会打印出带有空白 table 的 flashscore 页面的源代码(即驱动程序不等待乐谱加载完成)。我怀疑这是因为页面上的一些实时比分是动态加载的。有什么办法可以改善我的等待状态吗?
- 有一个接受 cookies 按钮,所以我们必须先点击它。
- 我正在使用显式等待,
first presence of table
然后 它的主体可见性。
代码:
driver.maximize_window()
driver.implicitly_wait(30)
wait = WebDriverWait(driver, 30)
driver.get("https://www.flashscore.com/football/albania/")
wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "button#onetrust-accept-btn-handler"))).click()
try:
wait.until(EC.presence_of_element_located((By.ID, "live-table")))
wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, "section.event")))
print(driver.page_source)
finally:
driver.quit()
进口:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
输出肯定很长,所以我可以在这里 post 因为 Whosebug 不允许我这样做。
我正在尝试在 Python 中使用 Selenium 解析 https://www.flashscore.com/football/albania/,但我的网络驱动程序通常不等待乐谱加载完成。
代码如下:
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
driver = webdriver.Firefox()
driver.get("https://www.flashscore.com/football/albania/")
try:
WebDriverWait(driver, 100).until(
lambda s: s.execute_script("return jQuery.active == 0"))
print(driver.page_source)
finally:
driver.quit()
有时,这会打印出带有空白 table 的 flashscore 页面的源代码(即驱动程序不等待乐谱加载完成)。我怀疑这是因为页面上的一些实时比分是动态加载的。有什么办法可以改善我的等待状态吗?
- 有一个接受 cookies 按钮,所以我们必须先点击它。
- 我正在使用显式等待,
first presence of table
然后 它的主体可见性。
代码:
driver.maximize_window()
driver.implicitly_wait(30)
wait = WebDriverWait(driver, 30)
driver.get("https://www.flashscore.com/football/albania/")
wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "button#onetrust-accept-btn-handler"))).click()
try:
wait.until(EC.presence_of_element_located((By.ID, "live-table")))
wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, "section.event")))
print(driver.page_source)
finally:
driver.quit()
进口:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
输出肯定很长,所以我可以在这里 post 因为 Whosebug 不允许我这样做。