Я получаю ошибку при удалении содержимого через селен python - PullRequest
0 голосов
/ 14 июля 2020

Я убираю заголовок результатов вакансий на https://www.indeed.ae/jobs-in-dubai через селен. я думаю .text не работает. Я запускаю код через селен, который go на главный веб-сайт, вводю выборочное ключевое слово, а затем удаляю все заголовки из результата. но я получаю сообщение об ошибке, как я могу решить эту ошибку

вот мой код

import time
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
from selenium.webdriver.common.keys import Keys

Path = "C:\Program Files (x86)\chromedriver.exe"
driver = webdriver.Chrome(Path)

driver.get("https://indeed.ae/")
print(driver.title)
search = driver.find_element_by_name("l")
search.send_keys("Dubai")
search.send_keys(Keys.RETURN)


try:
    td = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.ID, "resultsCol"))
    )
    divs = td.find_elements_by_tag_name("div")
    for div in divs:
        header = div.find_element_by_class_name("title")
        print(header)
finally:
    driver.quit()

driver.quit()

, и я получаю следующую ошибку

Job Search | Indeed
Traceback (most recent call last):
  File "C:/Users/hp/Desktop/python projects/selenium-pycharm/selenium-bot.py", line 24, in <module>
    header = div.find_element_by_class_name("title")
  File "C:\Users\hp\Desktop\python projects\selenium-pycharm\venv\lib\site-packages\selenium\webdriver\remote\webelement.py", line 398, in find_element_by_class_name
    return self.find_element(by=By.CLASS_NAME, value=name)
  File "C:\Users\hp\Desktop\python projects\selenium-pycharm\venv\lib\site-packages\selenium\webdriver\remote\webelement.py", line 659, in find_element
    {"using": by, "value": value})['value']
  File "C:\Users\hp\Desktop\python projects\selenium-pycharm\venv\lib\site-packages\selenium\webdriver\remote\webelement.py", line 633, in _execute
    return self._parent.execute(command, params)
  File "C:\Users\hp\Desktop\python projects\selenium-pycharm\venv\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 321, in execute
    self.error_handler.check_response(response)
  File "C:\Users\hp\Desktop\python projects\selenium-pycharm\venv\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":".title"}
  (Session info: chrome=83.0.4103.116)


Process finished with exit code 1

заранее спасибо

1 Ответ

0 голосов
/ 14 июля 2020

Вы не можете найти заголовок, потому что вы получаете весь div из resultsCol. что означает, что у некоторых div есть заголовок, а у некоторых нет.

Попробуйте следующее:

try:
    td = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.ID, "resultsCol"))
    )
    divs = td.find_elements_by_tag_name("div")
    #print(divs)
    for div in divs:
        try:
            header = div.find_element_by_class_name("title")
            print(header.text)
        except:
            continue
finally:
    driver.quit()

driver.quit()

которые дают заголовок в качестве вывода:

Receptionist
Administrative Assistant/ Document Controller
RECEPTIONIST
ADMIN OFFICER IN UAE
Data Entry Assistant (Fresh Graduate)
Receptionist
Replenishment Associate - Light Household - Hypermarket
DOCUMENT CONTROLLER
School Administrative Assistant - Dubai
ACCOUNTANT
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...