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.
Feito isso, basta selecionar o arquivo .botproj
que está na pasta raiz do projeto que foi criado.
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:
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.
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.
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:
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.
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: