Explorando resultados do Google Shopping com Python
Introdução
O Google Shopping, para muitas pessoas, é a ferramenta principal para encontrar o preço de um produto de interesse. Já que sua engine de pesquisa costuma trazer preços muito competitivos de produtos muito acessados, ou seja, costuma trazer resultados relevantes e que fazem sentido.
Neste tutorial, nós vamos aproveitar a conveniência do Google Shopping para realizar uma pesquisa, navegar pelos resultados de produtos, e encontrar os dados disponíveis em cada anúncio, tudo isto usando Python e sua biblioteca Beautiful Soup.
Além do Beautiful Soup, nós vamos precisar também do pacote Requests, que vai permitir acessar o Google Shopping, fazer a pesquisa e receber a página dos resultados em forma de código HTML, e do lxml, que não precisa ser importado, mas deve estar instalado, sua biblioteca será usada pelo Beautiful Soup para interpretar o HTML obtido com Requests.
Com os pacotes instalados, vamos escrever um programa que vai receber a sua pesquisa e mostrar os resultados no terminal.
1. Importando os pacotes
A maneira mais conveniente de instalar os pacotes é através do terminal de seu computador, através do pip. Depois de instalados podemos começar importando os pacotes:
2. Recebendo a página de resultados como um HTML
Um passo muito importante que muitas vezes é negligenciado é a escolha de um User-Agent, o Requests pode precisar de um desses parar receber o conteúdo de algumas páginas corretamente, e isto vale para este caso.
O User-Agent é um código utilizado para informar ao website que programa está o acessando. Neste caso, o programa mais interessante para acessar uma página do Google, talvez seja o Google Chrome, para isto, vamos instalá-lo e acessar esta página com ele.
No meu caso eu estou acessando esta página com um Chrome 99, instalado num Windows 10. Portanto, vou usar o código que recebi, e atribuí-lo a um dicionário chamado headers
:
Após isso, fica faltando apenas criar um objeto do Requests que vai conter o código HTML da página obtida. Em seguida, vamos entregar este código em formato de texto para um objeto do Beautiful Soup, a partir deste é que faremos todo o trabalho em seguida:
Observe que a função requests.get()
recebe um dicionário com duas chaves, a primeira, “q”, vai receber o texto que deve ser inserido no campo de pesquisa, enquanto que a segunda, “tbm”, indica que tipo de pesquisa será feita, neste caso, no shopping.
3. Coletando conteúdo dos anúncios e da grade de resultados
Inspecionando o código fonte obtido, descobrimos que os resultados que aparecem nos anúncios de “produtos relacionados” estão todos contidos em uma tag <div class="KZmu8e">
contendo outras duas tags, uma <style ...>
e outra <a class="shantl sh-np__click-target" ...>
, a primeira com configurações que definem a aparência do bloco, e a segunda com todas as informações que o preenchem.
Depois de explorar o código fonte da página e encontrar as tags que contêm o que nos interessa, voltamos para o Python, e vamos criar duas listas de objetos do Beautiful Soup, a primeira com os resultados patrocinados, e a segunda com os outros resultados.
4. Agora depende de você
Agora que temos um objeto iterável, podemos retirar informações iterativamente de todos eles ou apenas de algum objeto específico. Vale lembrar que nem todos os blocos possuem todos os resultados, informações como preço antes da promoção, avaliação dos clientes e valor do frete podem aparecer, mas não estão disponíveis em todos os blocos de resultado.
Para exemplificar uma maneira de extrair informações de cada bloco, vamos fazer o programa exibir o título, preço e nome da loja do primeiro produto de cada uma das listas que criamos anteriormente:
Executando o script que construímos ao longo deste artigo teremos este tipo de resultado:
Isto conclui o nosso objetivo! Espero que eu possa ter ajudado.