Show de bola! Acho que precisamos de mais search engines independentes e nos livrar do oligopólio.
Sobre opções para fazer um crawler, sinto que preciso dizer que qualquer linguagem serve! Sério, qualquer linguagem que permita que você faça uma request http e que você consiga fazer o parsing do conteúdo, serve. Mas o ponto principal é que nem todas são ideais, todas servem, mas não necessariamente devem ser utilizadas.
Uma search engine precisa, em média, mais de 2TB de dados (uma pesquisa que fiz a um bom tempo atrás, não consigo afirmar com certeza) para conseguir servir buscas decentemente. E isso é só o começo, você vai precisar muito mais do que isso e manter todo esse índice atualizado. Logo, ou você tem um processo muito otimizado e rápido, ou você vai gastar dinheiro em compute e tempo.
Então, voltando as ferramentas, recomendo escolher uma linguagem baseada nessas nescessidades, até por que nenhuma tem uma biblioteca "Google" já pronta pra você. Minha opinião: descarte Selenium imediatamente, gasta muito recursos e não vale a pena, escolha Rust/Go ou qualquer linguagem minimamente rápida (infelizmente python não é) para o desenvolvimento.
Isso é só minha visão, então estude e veja o posicionamento dos outros para ver possíveis caminhos. Espero que tenha ajudado.
PS: para evitar ser barrado como bot sei que a Cloudflare tem uma página sobre como se inserir no programa de search engines e ter um "passo livre" fazendo web crawls.
Depende muito dos dados que você está indexando, da forma com que você está indexando, e da própria search engine.
Por exemplo: tenho num elasticsearch (não é um cluster, apenas um nó master) um indice de cidades em todo o mundo, com 3MM+ de cidades.
O nome da cidade é indexado com diversas variações, usando a estratégia n-gram para fazer o autocomplete e outra estratégias.
então uma cidade chamada crato
é indexada internamente com as seguintes variacoes:
cra
crat
crato
c(a-z)a
cr(a-z)
...
ou seja, para tornar mais rapida a busca, você indexa diversos termos que apontam para um só documento (cidade).
Isso deixa o storage relativamente grande em relação a base de dados original.
Nesse caso, a minha tabela de cidades no banco de dados tem ~1.5GB, enquanto o elasticsearch ocupa ~8GB.
Acho 2TB um número muito alto, que só é atingido com uma quantidade muito grande de dados.
Show, valeu demais pelas dicas, vou dar uma estudada e tentar entender melhor sobre as linguagens que você me mandou, sobre o cloudflare muito obrigado também hehehe..