2017-07-01 2 views
0

Ich schreibe einen Scraping-Code für die Website Upwork und muss durch jede Seite für Stellenangebote klicken. Hier ist mein Python-Code, den ich Selen zum Crawlen verwendet habe.Warum klickt dieses Selen nicht bis zum Ende auf "nächste Seite"?

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

Sie brauchen, um mehr Details zu geben. Wann hört es auf zu arbeiten? Was passiert, wenn es aufhört? – Guy

Antwort

0

Es gibt einige Probleme:

  1. EC hat kein Attribut elementToBeClickable. In Python sollten Sie element_to_be_clickable
  2. Ihre link auf der ersten Seite definiert verwenden nur, so dass es auf der zweiten Seite benutzen, sollten Sie StaleElementReferenceException
  3. geben Es gibt keine wait Variable im Code definiert. Ich denke, meinen Sie so etwas wie

    wait = WebDriverWait(driver, 10) 
    
  4. By hat kein Attribut linkText. Versuchen Sie LINK_TEXT statt

Versuchen unter Code zu verwenden, um erforderliche Verhalten zu bekommen

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 

Diese erlauben sollten Sie Next Knopf zu klicken, während es verfügbar ist

Verwandte Themen