найти элемент с селеном xpath - PullRequest
0 голосов
/ 02 октября 2018

Я следую этому учебнику , чтобы узнать, как создать веб-мастер для получения списков вакансий.Сейчас я пытаюсь следовать вместе с другим сайтом.Я столкнулся с проблемой, что я не знаю, как извлечь ссылки из отдельных списков вакансий.

Когда я проверяю страницу, я нашел нужный мне элемент enter image description here

Когда я копирую xpath и использую его в своем коде, я получаюошибка.Что я делаю неправильно?

import selenium 
base_url = "https://www.nationalevacaturebank.nl"     
start_url = "https://www.nationalevacaturebank.nl/vacature/zoeken?query=&location=&distance=city&limit=100&sort=relevance&filters%5BcareerLevel%5D%5B%5D=Starter&filters%5BeducationLevel%5D%5B%5D=MBO" 
driver = webdriver.Firefox()    
elem = driver.find_element_by_xpath("//*[@id="search-results-container"]/div/div[1]/div[2]/article/job/a")

>>NoSuchElementException: Message: Unable to locate element: //*[@id="search-results-container"]/div/div[1]/div[2]/article/job/a

1 Ответ

0 голосов
/ 02 октября 2018

Во-первых, вы должны подключаться к своему веб-сайту ...

Во-вторых, вы должны использовать waits, вы можете прочитать об этом здесь

код долженвыглядеть примерно так:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC 


base_url = "https://www.nationalevacaturebank.nl"     
start_url = "https://www.nationalevacaturebank.nl/vacature/zoeken?query=&location=&distance=city&limit=100&sort=relevance&filters%5BcareerLevel%5D%5B%5D=Starter&filters%5BeducationLevel%5D%5B%5D=MBO" 
my_xpath = '//*[@id="search-results-container"]/div/div[1]/div[2]/article/job/a'
driver = webdriver.Firefox()
driver.get(start_url)  
wait = WebDriverWait(driver, 10)
element = wait.until(EC.element_to_be_clickable((By.XPATH, my_xpath)))

Редактировать

Я приказываю получить все ссылки в индивидуальном списке вакансий, вы можете создать список ссылок и добавить тему:

wait = WebDriverWait(driver, 10)
elements = wait.until(EC.presence_of_all_elements_located((By.XPATH, '//*[@id="search-results-container"]//article/job/a')))
list_of_links = []
for i in elements:
    list_of_links.append(i.get_attribute('href'))
    # print(f"link = {i.get_attribute('href')}")
print(list_of_links)

Надеюсь, это поможет вам!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...