Skip to content

Coletando dados do YouTube

Para este tutorial vamos construir uma automação que acesse e colete algumas informações sobre um canal no YouTube.

O objetivo é que esse bot seja capaz de encontrar e retornar corretamente as informações que queremos coletar da página.

Carregando o projeto no BotCity Studio

O primeiro passo é carregar o projeto no BotCity Studio.

Após iniciar o Studio e logar usando as suas credenciais, é só acessar a opção File -> Load Project.

Load Project

Feito isso, basta selecionar o arquivo .botproj que está na pasta raiz do projeto que foi criado.

Launch

Ao clicar em Launch o projeto será carregado e você poderá acessar os arquivos pelo BotCity Studio.

Acessando a página do YouTube

Com o projeto carregado, o próximo passo é acessar a página do canal no YouTube. Vamos utilizar o canal da Python Brasil como a referência inicial.

Alterando o arquivo bot.py na linha 36, ficará dessa maneira:

# Abre o canal da Python Brasil no YouTube
self.browse("https://www.youtube.com/c/pythonbrasiloficial")

Ao executarmos a automação, a página do canal no YouTube será aberta utilizando o seu navegador padrão:

Acessando página

Com o navegador aberto, podemos tirar um print da tela para utilizarmos como referência no BotCity Studio. Basta apertar a tecla de 'Print Screen' para fazer uma captura da tela.

Dica

Para macOS, ao invés de utilizar a tecla 'Print Screen', precisamos utilizar F9 ou ⏩ devido a uma limitação do sistema operacional.

Acessando a aba de informações

Primeiramente vamos acessar a aba que contém as informações que queremos coletar, nesse caso será a aba 'Sobre'.

Para fazermos isso, vamos voltar no BotCity Studio e fazer um recorte desse elemento que queremos encontrar.

Basicamente, vamos fazer a seleção da área desse elemento, definir um nome e a ação que desejamos fazer. Nesse caso, queremos fazer um clique logo após encontrá-lo.

Recorte BotStudio

Info

Para mais detalhes sobre a parte de visão computacional e seleção de elementos, acesse este link.

Ao clicarmos em Submit, o seguinte trecho de código será gerado pelo BotCity Studio:

if not self.find( "sobre", matching=0.97, waiting_time=10000):
    self.not_found("sobre")
self.click()

Se rodarmos novamente esse código, depois de abrir a página o bot irá realizar o clique no elemento que foi selecionado acima.

A partir disso, conseguimos continuar o processo de coleta dos dados.

Encontrando as âncoras e coletando os dados

Com a nova tela carregada, podemos novamente utilizar o 'Print Screen' para atualizarmos a screenshot que será utilizada no BotCity Studio.

Nova Screenshot

Neste exemplo, vamos tentar coletar a informação do número de inscritos e também o número de visualizações do canal.

Vamos utilizar a mesma lógica para encontrar esses novos elementos, a única diferença é que vamos definir uma ação de clique relativo.

Coletando âncora para o número de inscritos:

Âncora inscritos

A ação de clique relativo indica que queremos clicar em uma área relativa ao elemento encontrado.

Nesse caso, o clique será feito na área onde consta o número de inscritos.

O código gerado pelo BotCity Studio já irá conter as coordenadas corretas para que o clique seja realizado.

if not self.find( "inscritos", matching=0.97, waiting_time=10000):
    self.not_found("inscritos")
self.click_relative(-39, 7)

Somente com o código acima não conseguimos selecionar o valor que aparece na página.

Isso acontece pois somente um clique simples não tem efeito nenhum em cima do texto.

Porém, podemos alterar o código para utilizarmos um duplo clique relativo. Dessa forma, o bot será capaz de clicar e deixar selecionado o valor que queremos:

if not self.find( "inscritos", matching=0.97, waiting_time=10000):
    self.not_found("inscritos")
#self.click_relative(-39, 7)
self.double_click_relative(-39, 7)

Com o valor selecionado, podemos realizar uma simples operação de Ctrl+C e pegar o valor que foi copiado para a área de transferência (clipboard).

O código ficaria semelhante a esse aqui:

# Procurando pela âncora referente ao número de inscritos
if not self.find( "inscritos", matching=0.97, waiting_time=10000):
    self.not_found("inscritos")
self.double_click_relative(-39, 7)

# Coletando e exibindo o número coletado da página
self.control_c()
numero_inscritos = self.get_clipboard()
print(f"Inscritos => {numero_inscritos}")

Coletando âncora para o número de visualizações:

Vamos fazer o mesmo tratamento que fizemos para o elemento anterior, dessa vez utilizando uma âncora para referenciar o número de visualização do canal.

Âncora visualizações

Incluindo as mesmas alterações que fizemos anteriormente, o código ficaria dessa maneira:

# Procurando pela âncora referente ao número de visualizações
if not self.find( "visualizacoes", matching=0.97, waiting_time=10000):
    self.not_found("visualizacoes")
self.click_relative(-28, 5)

# Coletando e exibindo o número coletado da página
self.control_c()
numero_visualizacoes = self.get_clipboard()
print(f"Visualizações => {numero_visualizacoes}")

Ao rodar novamente a automação, você verá que o bot será capaz de encontrar, selecionar e exibir os dados coletados da página:

Resultado