Utilizando Python para armazenar notícias — Google News API
Crie um código em Python para capturar as notícias através do Google
Apesar do grande crescimento do web scraping (coleta de dados na Web) nos últimos anos, principalmente com o uso da bibliotecas BeautifulSoup e/ou Selenium, esse processo é muitas vezes custoso. Sendo necessário adaptar o código para um site específico ou de correr o risco de ser bloqueado por algum sistema de segurança.
Há outros métodos mais simples de capturar notícias com Python. Vários desenvolvedores disponibilizam sua API (Application Programming Interface) e nesse artigo falaremos um pouco do GoogleNews.
Essa API está disponível no site The Python Package Index (PyPI), o repositório para a linguagem Python. Quando precisar de alguma funcionalidade específica, é sempre muito útil realizar uma busca nos repositórios existentes.
A primeira coisa que você deve fazer, independente se está usando o pacote Anaconda, PyCharm ou o Google Colab, é verificar se os pacotes que irá usar estão instalados. Diretamente no Jupyter Notebook, deve executar o seguinte comando:
!pip install GoogleNews
O símbolo de exclamação é utilizado para executar comandos no Jupyter Notebook como se você estivesse utilizando o terminal. Após a instalação, podemos importar os pacotes que utilizaremos.
Para armazenar as notícias em um data frame utilizares o nosso conhecido pandas.
Precisamos apenas instanciar um objeto da classe GoogleNews e utilizar os seus métodos. Vamos primeiro testar definindo o período diário. Lembrar que o padrão do pacote é trazer notícias em inglês, portanto precisamos definir o idioma pt-BR para trazer notícias em português.
Passamos a palavra que desejamos buscar para a função search( ). Que definirá essa palavra como parâmetro de busca.
Após isso, é só utilizar a função result( ) para trazer os resultados. Observe que os resultados são armazenados na estrutura de dados Dictionary.
Para armazenar em DataFrame Pandas só precisamos passar esses dados para o DataFrame( ) como no exemplo abaixo:
Possuindo os dados em um DataFrame fica muito mais fácil de trabalhar com eles.
Existem outras opções para utilização do GoogleNews como a definição de um período para busca das notícias:
googlenews=GoogleNews(start='08/01/2020',end='08/31/2020')
Ou se desejar capturar somente os links dos sites que está buscando:
googlenews=googlenews.get__links()
A funcionalidade de capturar somente os links pode ser bem útil para utilizarmos com a biblioteca Article e assim realizar o download das notícias.
Mas isso é tema de outro artigo.
O código para teste está disponível aqui:
Qualquer dúvida, me siga em @aprendadatascience !
Obrigado!