Поиск тоа-сайта в Яндекс выдаче
Прошу помочь, так как не могу найти решение
Автоматизация через python+selenium
Шаги:
- Набрать наименование. Допустим, Вконтакте;
- Определить, находится ли в первых трёх строках выдачи.
Решил через xpath с применением цикла - выдаёт постоянно:
"Возникло исключение: NoSuchElementException
Message: no such element: Unable to locate element: {"method":"xpath","selector":"//div[class='path']/a[class='link']"}"
Вот код скрипта:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
driver = webdriver.Chrome()
driver.get("https://yandex.ru")
search_string = WebDriverWait(driver, 10).until(
EC.visibility_of_element_located((By.CLASS_NAME, "input__control")))
search_stroke = driver.find_element_by_class_name("input__control")
search_stroke.send_keys("Вконтакте")
search_suggest = WebDriverWait(driver, 10).until(
EC.visibility_of_element_located((By.CLASS_NAME, "mini-suggest__popup-content")))
search_stroke.send_keys(Keys.ENTER)
#здесь ошибка ↓
elements = driver.find_element_by_xpath("//div[class='path']/a[class='link']")
for i in range(2):
print(elements[i])
Мне просто нужно определить что в первых трёх строках есть vk.com. И именно надо через сайт Яндекс, а не API или как-то по-другому :)
Ответы (1 шт):
Автор решения: Денис Иванов
→ Ссылка
Исправил где у Вас ошибка
elements = []
elements.append(driver.find_element_by_css_selector("#search-result > li:nth-child(3) > div > h2 > a"))
elements.append(driver.find_element_by_css_selector("#search-result > li:nth-child(4) > div > h2 > a"))
elements.append(driver.find_element_by_css_selector("#search-result > li:nth-child(5) > div > h2 > a"))
for i in range(2):
print(elements[i].text )
print(elements[i].get_attribute('innerHTML') )