我试图在上刮,这是一个带有Selenium的网站(因为它是一个动态加载内容的网站)。
然而,为了等待加载这样的动态内容,虽然我通常使用time.sleep(),我刚刚知道(并尝试过) driver.implicitly_wait(),但似乎没有得到预期的内容。
以下是代码:
from selenium import webdriver
import os
import time
os.environ['MOZ_HEADLESS'] = '1'
baseSite = 'https://bair.berkeley.edu/students.html'
driver = webdriver.Firefox()
#driver.implicitly_wait(5) --> full content is not retrieved
driver.get(baseSite)
time.sleep(5) # full content is retrieved
source = driver.page_source
print(source)发布于 2020-07-06 21:29:46
隐式等待超时的设置(即使用implicitly_wait()不影响浏览器加载页面的方式)。该方法是在使用find_element或find_elements时轮询DOM中所需的元素。在您发布的代码中,设置隐式等待超时没有任何效果,因为您没有试图在页面上找到任何元素。
如果你要提供更多关于你期望的细节(除了说,“我希望页面被‘完全加载’”,因为这个短语非常模糊以至于毫无意义),提供更多的指导可能会更容易。
发布于 2020-07-07 01:20:48
您可以使用显式等待,这将等待直到满足某一条件。例如,
element = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, "myDynamicElement")))
将等到WebDriver找到该元素(直到10秒过去,此时它将超时)。这个链接有助于更多地了解Selenium中不同类型的等待。https://selenium-python.readthedocs.io/waits.html
https://stackoverflow.com/questions/62763682
复制相似问题