Acredito que as ferramentas que o JS e o Python oferecem são suficientes para a maioria dos casos. Dão suporte para requisições async, por exemplo, e isso pode melhorar bastante o seu processo de coleta. Além da vastidão de libs que auxiliam, de maneira eficiente, nesse processo.

Não sei se é o seu caso, mas há alguns outros pontos relevantes para a discussão:

  1. análise da aplicação: uma análise um pouco mais profunda pode lhe levar a um caminho mais simples e curto do que o scraping. um exemplo é a busca, lá no DevTools mesmo, por respostas no formato JSON. isso pode ser um indício de que a aplicação principal esteja fazendo requisições para uma api pública.
  2. ferramenta correta: esse tópico DEVE ser uma consequência do primeiro tópico. usar o Selenium/Puppeteer para um site com API disponível, mesmo que sem documentação oficial, é um desperdício de recursos. por isso, concordo que requests e BeautifulSoup, no Python, e as funções nativas no JS, resolvem a maioria dos problemas de web scraping.
  3. otimização do código: não adianta utilizar a "melhor linguagem" com as "melhores libs" e não se preocupar em como transformar e armazenar os dados. isso se torna uma preocupação maior ainda se for um grande volume de dados.

Por experiência própria, acredito que esses pontos são fundamentais quando o assunto é coleta de dados em geral.