Как парсить сайт, где есть пагинация и при переходе по страница не меняется url в строке браузера?

Парсю сайт на питоне ссылка: https://www.copart.com/search/runanddrive/, и при переходе на другую страницу не изменяется url, как я понял выполняются AJAX - запросы, и они выполняются через XHR - запросы, когда я перехожу на другую страницу сайт отправляет XHR - запрос search, в этом запросе хранится какой - код, и в нём я увидел параметр page = 0, и при переходе на например вторую страницу он меняется на page = 1. Но я не понимаю как отправить запрос, чтобы у меня открылась следующая страница? 'Код страницы'

    from bs4 import BeautifulSoup
    import requests
    from selenium import webdriver
    from selenium.webdriver.support.ui import WebDriverWait

    URL = "https://www.copart.com/vehicle-search-featured/runanddrive"
    HEADERS = {
    "user-agent": "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) 
    Chrome/92.0.4515.107 Safari/537.36",
    "accept": "*/*"
    }
 


    def selen(url, params = None):
    driver = webdriver.Chrome(executable_path = "C:/Users/пк/OneDrive/Рабочий 
    стол/Parser23/chromedriver.exe")
    driver.get(url)
    c = driver.page_source
    return c







    def get_content(html):
        cars = []
        soup = BeautifulSoup(html,"html.parser")
        items = soup.find("div", class_ = "dataTables_wrapper form-inline dt-bootstrap no- 
        footer").find("tbody").find_all("tr", {"role" : "row"})
        for item in items:
            Retail_Value = item.find("span", {"data-uname" : 
            "lotsearchLotestimatedretailvalue"})  
            link = item.find("a", class_ = "search-results")
            Sale_Date = item.find("span", {"data-uname" : "lotsearchLotauctiondate"})
            if link:    
                link = link.get("href")
            if Retail_Value:
                Retail_Value = Retail_Value.get_text(strip = True)
            else:
                Retail_Value = "Цены нет" 
            if Sale_Date:
                Sale_Date = Sale_Date.get_text(strip = False)
            else:
                Sale_Date = "Цены нет!"
            cars.append({
                "Lot# / link": f'{item.find("a", {"data-uname" : 
                "lotsearchLotnumber"}).get_text(strip = True)} / {link}',
                 "Year": item.find("span", {"data-uname" : 
                 "lotsearchLotcenturyyear"}).get_text(strip = True),
                 "Make": item.find("span", {"data-uname" : "lotsearchLotmake"}).get_text(strip 
                 = True),
                 "Model": item.find("span", {"data-uname": 
                 "lotsearchLotmodel"}).get_text(strip = True),
                 "Item#": item.find("span", {"data-uname": 
                 "lotsearchItemnumber"}).get_text(strip = True),
                 "Location/lane/ row": f'{item.find("span", {"data-uname" : 
                 "lotsearchLotyardname"}).get_text(strip = True)}/{item.find("span", {"pref- 
                 code" : "searchPreference.searchFields"}).get_text(strip = True)}',
                 "Sale Date": f'{Sale_Date}',
                 "Odometer": item.find("span", {"data-uname": 
                 "lotsearchLotodometerreading"}).get_text(strip = True),
                 "Title code": item.find("span", {"data-uname": 
                 "lotsearchSaletitletype"}).get_text(strip = True),
                 "Damage": item.find("span", {"data-uname" : 
                 "lotsearchLotdamagedescription"}).get_text(strip = True),
                 "Est. Retail Value": Retail_Value,
                 "Current Bid": item.find("ul", class_ = "list-unstyled").get_text(strip = 
                 True)
                 })
            print(cars)

    def parse():
        html = selen(URL)
        get_content(html)

    





    parse()
 

Ответы (2 шт):

Автор решения: Сергей Шашко

Так нажми с помощью selenium-а на кнопку 'Next', страница в браузере обновиться. Используем driver.page_source и у нас есть обновленный код страницы и так по кругу.

P.S. Можно и через запрос, но ответ придет в виде json

→ Ссылка
Автор решения: John Doe

Парсить copart.com — неудобно: защита, блокировки, частые изменения. Лучше использовать готовый API — быстрее и стабильнее. Есть, например, такой сайт: https://auctionsapi.com

→ Ссылка