等待页面加载selenium,Python。所有页面都具有相同的结构

时间:2017-04-06 08:39:12

标签: python selenium

我正在尝试使用selenium和python来抓取一些数据。我有一个包含一些链接的列表,我必须通过每个链接。我现在做的是以下内容:

for link in links:
    self.page_driver.get(link)
    time.sleep(5)
    #scrape data

它工作正常,问题是我有很多链接,每个等待5秒钟是浪费时间。这就是为什么我决定尝试使用类似的东西:

self.driver.get(link)
try:
    element_present = EC.presence_of_element_located((By.CLASS_NAME, 'cell-box'))
    WebDriverWait(self.driver, 10).until(element_present)
except TimeoutException:
    logging.info("Timed out waiting for page to load")

问题是每个链接内部都有完全相同的结构,只有数据更改,因此即使页面没有更改,也会找到该元素。我想要做的是将产品的名称保存在变量的链接中,更改页面等到产品名称与保存的名称不同,这意味着加载了新页面。任何帮助将非常感激。

1 个答案:

答案 0 :(得分:0)

您可以添加staleness_of Expected Condition

wait = WebDriverWait(self.driver, 10)
element = None
for link in links:
    self.page_driver.get(link)
    if (element is not None):
        wait.until(EC.staleness_of(element)
    try:
        element = wait.until(EC.presence_of_element_located((By.CLASS_NAME, 'cell-box')))
    except TimeoutException:
        logging.info("Timed out waiting for page to load")

    #scrape data