Тут нужен headless browser, это по сути браузер без графической оболочки, через него можно в т.ч. и spa парсить (может исполнять js как и обычный браузер). Можно использовать уже упомянутый Silenium, но есть альтернативы практически под любые языки. К примеру Node.js - Playwright, Puppeteer, Go - chromedp.