为什么这个硒没有点击"下一页"直到结束?

时间:2017-07-01 21:00:57

标签: python selenium web-crawler screen-scraping next

我正在为Upwork网站编写一个抓取代码,需要点击每个页面查看工作列表。这是我的python代码,我使用selenium进行网络爬行。

from bs4 import BeautifulSoup
import requests
from os.path  import basename
from selenium import webdriver
import time
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By

driver = webdriver.Chrome("./chromedriver")
driver.get("https://www.upwork.com/o/jobs/browse/c/design-creative/")


link = driver.find_element_by_link_text("Next")
while EC.elementToBeClickable(By.linkText("Next")):
    wait.until(EC.element_to_be_clickable((By.linkText, "Next")))
    link.click()

1 个答案:

答案 0 :(得分:0)

有几个问题:

  1. EC没有属性elementToBeClickable。在Python中,您应该使用element_to_be_clickable
  2. 您的link仅在第一页上定义,因此在第二页上使用它会给您StaleElementReferenceException
  3. 代码中没有定义wait变量。我想你的意思是

    wait = WebDriverWait(driver, 10)
    
  4. By没有属性linkText。请尝试使用LINK_TEXT

  5. 尝试使用以下代码获取所需行为

    from selenium.common.exceptions import TimeoutException
    while True:
        try:
            wait(driver, 10).until(EC.element_to_be_clickable((By.LINK_TEXT, Next"))).click()
        except TimeoutException:
            break
    

    这应该允许您点击Next按钮