My current favourite stack for this is Selenium + Python - it lets me write most of my scraper in JavaScript that I run inside of the browser, but having Python to control it means I can really easily write the results to a SQLite database while the scraper is running.
I wrote a bit about this here: https://simonwillison.net/2020/Oct/16/weeknotes-evernote-dat...