URL-адрес изменяется, поэтому вы можете указать номер страницы и результаты на страницу в URL-адресе, например:
https://www.forever21.com/uk/shop/catalog/category/f21/sale/#pageno=2&pageSize=120&filter=price:0,250
Как упоминалось в @vezunchik и обратной связи OP, для этого подхода требуется селен / всплеск, чтобы js мог работать настраница.Если вы шли по этому маршруту, вы можете просто нажимать следующий (.p_next
) до тех пор, пока не получите конечную страницу, поскольку легко получить номер последней страницы (.dot + .pageno
) из документа.
Я ценю, что вы пытаетесь с помощью скрапа.
Демонстрация идеи с селеном на случай, если это поможет.
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
url_loop = 'https://www.forever21.com/uk/shop/catalog/category/f21/sale/#pageno={}&pageSize=120&filter=price:0,250'
url = 'https://www.forever21.com/uk/shop/catalog/category/f21/sale'
d = webdriver.Chrome()
d.get(url)
d.find_element_by_css_selector('[onclick="fnAcceptCookieUse()"]').click() #get rid of cookies
items = WebDriverWait(d,10).until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, "#products .p_item")))
d.find_element_by_css_selector('.selectedpagesize').click()
d.find_elements_by_css_selector('.pagesize')[-1].click() #set page result count to 120
last_page = int(d.find_element_by_css_selector('.dot + .pageno').text) #get last page
if last_page > 1:
for page in range(2, last_page + 1):
url = url_loop.format(page)
d.get(url)
try:
d.find_element_by_css_selector('[type=reset]').click() #reject offer
except:
pass
# do something with page
break #delete later