Не удается спарсить все элементы страницы selenium
Делаю парсер для сайта и столкнулся с такой проблемой что получаю не все элементы на странице
def parse(driver, addlink):
driver.get(url + 'product-list-page?q=' + urllib.parse.quote(addlink))
driver.implicitly_wait(15)
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
a = driver.find_elements(By.XPATH, "//span[@class='price__main-value']")
print(len(a))
for i in a:
...
driver = webdriver.Chrome(options=Options())
driver.set_window_size(1920, 1080)
parse(driver, "видеокарта")
В инструментах разработчика при поиске нужных элементов так же ищутся не все элементы, но при выборе последующих элементов догружаются
Изменение разрешения экрана меняет количество найденных обьектов. пробовал явное ожидание, и скролл вниз до конца страницы. Это не дало результатов
Ответы (1 шт):
Интересная ситуация.. Однако есть решение. В самом низу страницы есть выпадающий список "Показать по .." по икспасу: //*[.='Показать ещё']/../../div[2]/mvid-dropdown/div/div[1]
Я выбрал из этого списка показать по 12 После чего все 12 элементов отобразились в принте: https://prnt.sc/MhiHlyaPRKqa
Думаю Вам не составит труда прокликать каждую страницу из всех существующих которые там есть, хоть и по 12, за то все.
Код:
#Селекторы
test_test = (By.XPATH, "//span[@class='price__main-value']")
test_test_2 = (By.XPATH, "//*[.='Показать ещё']/../../div[2]/mvid-dropdown/div/div[1]")
test_test_2_1 = (By.XPATH, "//*[.='Показать ещё']/../../div[2]/mvid-dropdown/div/div[2]/div[1]")
def parse(self):
self.element_is_visible(self.locators.test_test_2).click() # Кликаем на элемент выпадающего списка
self.element_is_visible(self.locators.test_test_2_1).click() # Кликаем на элемент ИЗ выпадающего списка
c = 0
a = self.elements_are_visible(self.locators.test_test) # Здесь все цены на видяшки
for i in a:
c += 1
print('element:', c, ' - ', i.text)

