如果只想让脚本遍历所有结果页,则不需要任何复杂的逻辑—只需单击“下一步”按钮,而这是可能的:
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait as wait
from selenium.common.exceptions import TimeoutException
driver = webdriver.Chrome()
driver.get('https://www.amazon.com/s/ref=nb_sb_noss_1?url=search-alias%3Daps&field-keywords=sonicare+toothbrush')
while True:
try:
wait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, 'a > span#pagnNextString'))).click()
except TimeoutException:
break
另请注意
implicitly_wait(10)
不应该等
整整10秒
但是
等待10秒,使元素出现在html dom中
. 所以,如果元素在1或2秒内被找到,那么等待就完成了,您将不会等待剩下的8-9秒…