#python #python-3.x #python-2.7 #selenium #selenium-webdriver
Вопрос:
Я пытаюсь нажать кнопку загрузить больше бесконечное время, пока не загрузятся все продукты. Но моя кнопка «Загрузить больше» не работает. вот мой код:
url = 'https://www.pursemall.ru/vuitton/damier-azur'
driver = webdriver.Chrome()
driver.maximize_window()
driver.get(url)
try:
for i in range(1000):
load_more_button = driver.find_element_by_xpath("//span[text()='Load More Products']")
load_more_button.click()
except:
pass
print("task load more button completed")
почему моя кнопка «Загрузить больше» не работает? где я совершаю ошибку?
Комментарии:
1. Попробуйте проверить элемент и скопировать его CSS-селектор или XPath
Ответ №1:
Что вы можете сделать, так это сделать следующее. Каждый вызов внутри цикла приведет к получению набора продуктов. Вы можете очистить каждый ответ и собрать данные.
В браузере выполните F12 -> Сеть ->> XHR и посмотрите, как браузер выполняет HTTP-вызов каждый раз, когда вы нажимаете >>Загрузить больше продуктов
import requests
for page in range(1,4):
url = f'https://www.pursemall.ru/vuitton/damier-azur?page={page}'
print(url)
r = requests.get(url)
print(r.status_code)
Ответ №2:
Я не на 100% уверен, почему ваш исходный код не работал, но я смог заставить его работать, скопировав полный XPATH кнопки вместо того, что у вас есть в вашем коде выше.
Я также использовал WebDriverWait
и sleep()
ждать несколько секунд, пока кнопка не будет загружена после каждого щелчка, так как это хорошая практика для веб-скребков. Возможно, проблема заключалась в сочетании двух 🙂
url = 'https://www.pursemall.ru/vuitton/damier-azur'
driver = webdriver.Chrome(PATH) # PATH is where you have chromedriver stored on your machine
driver.maximize_window()
driver.get(url)
try:
for i in range(1000):
load_more_button = WebDriverWait(driver, 10).until(ec.element_to_be_clickable(
(By.XPATH, '/html/body/div[1]/div/div[3]/div[3]/span/a/span')))
sleep(3)
load_more_button.click()
except:
pass
print("task load more button completed")