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