Scraper不会停止点击下一页按钮

时间:2017-11-13 07:42:58

标签: python python-3.x selenium selenium-webdriver web-scraping

我已经在python中编写了一个与selenium结合使用的脚本,以便在搜索时显示一些名称和相应的地址,搜索关键字是" Saskatoon"。但是,在这种情况下,数据遍历多个页面。除了一件事,我的剧本几乎可以做所有事情。

  1. 即使没有更多页面要遍历,它仍然会运行。最后一页还包含">"签署下一页选项并且不会显示为灰色。
  2. 以下是链接:Page_link

    Search_keyword:Saskatoon(在城市/城镇地区)。

    这是我写的:

    from selenium import webdriver; import time
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    from selenium.webdriver.common.keys import Keys
    
    driver = webdriver.Chrome()
    wait = WebDriverWait(driver, 10)
    driver.get("above_link")
    time.sleep(3)
    
    search_input = driver.find_element_by_id("cityField")
    search_input.clear()
    search_input.send_keys("Saskatoon")
    search_input.send_keys(Keys.ENTER)
    
    while True:
        try:
            wait.until(EC.visibility_of_element_located((By.LINK_TEXT, "›"))).click()
            time.sleep(2)
        except:
            break
    driver.quit()
    

    顺便说一句,我刚刚从这个脚本中取出了名称和地址部分,我想这里不相关。感谢。

1 个答案:

答案 0 :(得分:3)

您可以使用class按钮的>属性作为最后一页"ng-scope disabled",而在其余页面上"ng-scope"

wait.until(EC.visibility_of_element_located((By.XPATH, "//li[@class='ng-scope']/a[.='›']"))).click()