Парсинг динамического сайта на python?
Обычные graphql запросы. viewId всегда одинаковый судя по всему
endCursor возвращается при каждом запросе

import requests

data = [{"operationName":"EventExhibitorList","variables":{"viewId":"RXZlbnRWaWV3XzE1MjUyMA==","search":"","selectedFilters":[{"mustEventFiltersIn":[]}]},"extensions":{"persistedQuery":{"version":1,"sha256Hash":"ee232939a5b943c0d87a4877655179bc2e5c73472ff99814119deddb34e0a3b6"}}}]

response = requests.post('https://api.swapcard.com/graphql', json=data).json()
# парсим нужные данные тут

end_cursor = response[0]['data']['view']['exhibitors']['pageInfo'].get('endCursor')

while end_cursor:
    data = [{"operationName":"EventExhibitorList","variables":{"viewId":"RXZlbnRWaWV3XzE1MjUyMA==","search":"","selectedFilters":[{"mustEventFiltersIn":[]}],"endCursor":end_cursor},"extensions":{"persistedQuery":{"version":1,"sha256Hash":"ee232939a5b943c0d87a4877655179bc2e5c73472ff99814119deddb34e0a3b6"}}}]
    
    response = requests.post('https://api.swapcard.com/graphql', json=data).json()

    # тут парсим нужные данные

    end_cursor = response[0]['data']['view']['exhibitors']['pageInfo'].get('endCursor')
Посмотри там же конкретную структуру запроса (что за поля передаются, их значения). Потом сформируй такой же запрос, скажем через requests и отправляй. Также нужно будет понять, как парсить ответ - это json, или это кусок html, или ещё что?
Детали зависят от конкретного сайта, так что конкретный код - это уже фриланс. 

Только имей ввиду, сайты могут не любить, когда их активно парсят. Варианты могут быть:

Проверка кук - просто загрузи сначала главную страницу в той же сессии requests, чтобы куки были.
Специальный сеансовый ключ для запросов - выясни, как он загружается, и сделай этот запрос перед началом работы.
Ограничение числа запросов с одного хоста - используй прокси, а лучше ограничь скорость работы скрипта.
Проверка клиента - поставь правильный User-Agent, можешь даже скопировать заголовки запроса.
