Я очищаю веб-сайт со следующей структурой:
<div class = "cr__stores-list">
<div class = "cr__stores-item">store1</div>
<a href = "/stores/store1/">
<div class = "cr__stores-item-b">
<div class = "cr__container-name">
<h3 class = "cr__container-name-title cr__text--subtitle3 cr__textColor--colorDark300">
Store Name
</h3>
</div>
</div>
</div>
<div class = "cr__stores-item">store2</div>
...
...
<div class = "cr__stores-item">store3</div>
<div class = "cr__stores-item">store4</div>
</div>
Каждый "div class="cr__stores-item"" внутри "div class="cr__stores-list"" имеет точно такую же структуру. для каждого "div class="cr__stores-item"" я пытаюсь очистить URL-адрес и название магазина внутри тега h3
У меня пока есть следующий код:
wd = webdriver.Chrome('chromedriver', options=options)
wd.get('stores_url')
element = WebDriverWait(wd, 20).until(EC.presence_of_element_located((By.CLASS_NAME, "cr__stores-list")))
list_stores_tags = element.find_elements_by_class_name("cr__stores-item")
for store_tag in list_stores_tags:
# store_tmp = store_tag.find_element_by_class_name("cr__container-name-title cr__text--subtitle3 cr__textColor--colorDark300")
# store_tmp = store_tag.find_element_by_css_selector('h3.cr__container-name-title cr__text--subtitle3 cr__textColor--colorDark300')
store= store_tmp.text
url_tmp = store_tag.find_element_by_tag_name("a")
url = url_tmp.get_attribute('href')
Две прокомментированные строки - это мои попытки получить название магазина. С помощью этого кода я без проблем получаю все URL-адреса каждого магазина. Однако я не могу получить названия магазинов. Ни find_element_by_class_name, ни find_element_by_css_selector не работают, так как в обоих случаях я получаю исключение:
Сообщение: нет такого элемента: невозможно найти элемент: {"метод":"селектор css","селектор":".cr__container-name-title cr__text--subtitle3 cr__textColor--colorDark300"} (Информация о сеансе: безголовый хром = 87.0.4280.88)
или
Сообщение: нет такого элемента: невозможно найти элемент: {"метод":"селектор css","селектор":"h3.cr__container-name-title cr__text--subtitle3 cr__textColor--colorDark300"} (Информация о сеансе: безголовый хром = 87.0.4280.88)
Что я делаю не так? Любые предложения будут приветствоваться. Спасибо!
Ах! Вот и все! Спасибо! Я понятия не имел, что это способ писать теги с пробелами;)
Вот как вы используете селекторы CSS для выбора элементов с несколькими классами. См. stackoverflow.com/questions/2554839/….
Вы неправильно используете find_element_by_css_selector
. Пытаться
store_tag.find_element_by_css_selector('h3.cr__container-name-title.cr__text--subtitle.cr__textColor--colorDark300')
Обратите внимание на точки вместо пробелов.
Вы неправильно используете
find_element_by_css_selector
. Попробуйтеstore_tag.find_element_by_css_selector('h3.cr__container-name-title.cr__text--subtitle.cr__textColor--colorDark300')
. Обратите внимание на точки вместо пробелов.