使用Python+Selenium单击带有while循环的下一页

2024-09-28 20:57:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我试着在一个叫做iens的网站上浏览不同的页面。我正在使用selenium+python单击“volgende”(荷兰语中的意思是“next”),但我希望我的程序继续单击next,直到使用while循环的页面不再存在。所以在这个例子中,我希望我的程序在第23页结束。现在我可以进入第2页,关闭cookie弹出消息,等待它关闭,然后单击“Volgende”按钮。在

我的代码如下:

 from selenium.webdriver.support.ui import WebDriverWait
 from selenium import webdriver
 from selenium.webdriver.common.by import By
 from selenium.webdriver.support import expected_conditions as EC

 chrome_path = '/Users/user/Downloads/chromedriver'
 driver = webdriver.Chrome(chrome_path)
 driver.get('https://www.iens.nl/restaurant+utrecht')

 #wait for cookie message
 close_icon = WebDriverWait(driver, 5, 
 0.25).until(EC.visibility_of_element_located([By.CSS_SELECTOR, 
 '.cookiePolicy-close']))

 close_icon.click()

 #wait for cookie message to disappear
 WebDriverWait(driver, 5, 
 0.25).until(EC.invisibility_of_element_located([By.CSS_SELECTOR, 
 '.cookiePolicy-close']))

 click_icon = WebDriverWait(driver, 5, 
 0.25).until(EC.visibility_of_element_located([By.LINK_TEXT, 
 'Volgende']))
 click_icon.click()

这个网站叫做https://www.iens.nl/restaurant+utrecht

提前谢谢!在


Tags: offromimportclosebycookiedriverselenium
1条回答
网友
1楼 · 发布于 2024-09-28 20:57:05

由于每次切换到下一页时都会自动滚动,webdriver试图单击Next按钮,但其他一些元素会收到单击。您可以使用此解决方案:

while True:
    try:
        click_icon = WebDriverWait(driver, 5, 0.25).until(EC.visibility_of_element_located([By.LINK_TEXT, 'Volgende']))
        click_icon.click()
        WebDriverWait(driver, 5).until(EC.presence_of_element_located((By.CSS_SELECTOR, 'main:not([style*="margin-top"])')))
    except:
        break

另一个简单的解决方案(仅当您的目标是到达最后一页时)是在不一直单击Next的情况下获取最后一页:

^{pr2}$

相关问题 更多 >