python selenium — не удается найти элемент на сайте justdial

#jquery #python-3.x #selenium #web-scraping #beautifulsoup

#jquery #python-3.x #selenium #очистка веб-страниц #beautifulsoup

Вопрос:

Я уже пробовал

  1. Неявное и явное ожидание
  2. подождите.пока
  3. Модуль времени

Здесь я пытаюсь найти ссылку «Загрузить больше отзывов» на justdial. Вот ссылка. Пожалуйста, проверьте и помогите.

 from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager

browser = webdriver.Chrome(ChromeDriverManager().install())
browser.get("https://www.justdial.com/Delhi/S-K-Premium-Par-Hari-Nagar/011PXX11-XX11-131128122154- 
B8G6_BZDET")



elem = browser.find_element_by_xpath('//*[@id="lmrehd"]')

elem.click()
  

Пожалуйста, дайте мне какое-нибудь решение с объяснением.

Ответ №1:

Найдите тег span, который содержит Load more reviews в виде текста.

 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 webdriver_manager.chrome import ChromeDriverManager

browser = webdriver.Chrome(ChromeDriverManager().install())
browser.get("https://www.justdial.com/Delhi/S-K-Premium-Par-Hari-Nagar/011PXX11-XX11-131128122154-B8G6_BZDET")

element = WebDriverWait(browser, 20).until(
EC.element_to_be_clickable((By.XPATH, "//span[text()='Load More Reviews..']")))
element.click()

browser.quit()
  

Ответ №2:

Этот веб-сайт динамический, идентификатор будет меняться каждый раз, когда вы перезагружаете страницу ,

Вы не можете использовать идентификатор как способ его очистки.

Попробуйте что-нибудь еще, например, текстовое содержимое