我正在为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()
答案 0 :(得分:0)
有几个问题:
EC
没有属性elementToBeClickable
。在Python
中,您应该使用element_to_be_clickable
link
仅在第一页上定义,因此在第二页上使用它会给您StaleElementReferenceException
代码中没有定义wait
变量。我想你的意思是
wait = WebDriverWait(driver, 10)
By
没有属性linkText
。请尝试使用LINK_TEXT
尝试使用以下代码获取所需行为
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
按钮