Armazenando tweets no MongoDB

Salve salve galera, neste post irei ensinar como conseguimos pegar os dados do twitter e gravar esses dados no MongoDB.


Primeiramente vamos instalar as bibliotecas utilizadas com o comando abaixo:
pip install tweepy pymongo

PS: Ao final do post tem uma breve explicação sobre essas duas bibliotecas.

Agora vamos acessar o site da API do twitter para cadastrarmos nosso acesso para a API:

Primeiramente, vamos criar um "App", após se cadastrar no apps twitter, clique em "Create New App" conforme mostrado em amarelo abaixo:



Agora vamos cadastrar os dados do nosso "App", primeiramente informe um nome para o seu App, após o nome insira uma breve descrição e o seu Website, após inserir essas três informações, basta clicar em "Create your Twitter application":

Após criar o seu "App"  navegue até a aba "Keys and Access Tokens", vocês perceberam que vocês possuem uma "Consumer Key" e uma "Consumer Secret", porém vocês não possuem o "Access Token", para gerar o "Access Token", clique em "Create my access token" conforme mostrado abaixo:
Agora perceba que o vocês possuem "Cosumer Key", "Consumer Secret", "Access Token" e "Access Token Secret". Essas informações serão utilizadas pela API do twitter no nosso código python.

Vamos começar a parte legal agora, primeiro crie um script python com o nome que desejar, vamos utilizar a versão 2.7 do python.
vim scriptweet.py
Vamos começar incluindo nossas bibliotecas para acessar as APIs.
from pymongo import MongoClient
import tweepy
import sys
O módulo do pymongo vai realizar a conexão do python com o MongoDB, o módulo do tweepy vai buscar os nossos tweets e o módulo sys vai servir para conseguirmos passar parâmetros de pesquisa.

Agora vamos configurar nossa conexão com o MongoDB:
connect = MongoClient('127.0.0.1')
db = connect['tweets_python']
Na primeira linha estamos conectando ao MongoDB que está localizado no IP 127.0.0.1(localhost), em seguida estamos criando o database tweets_python caso ele não exista.

Agora vamos configurar o acesso ao nosso "App" do twitter:

consumer_key = 'YOUR CONSUMER KEY'
consumer_secret = 'YOUR CONSUMER SECRET KEY'


access_token = 'YOUR ACCESS TOKEN'
access_token_scret = 'YOUR SECRET ACCESS TOKEN'
Substituía as frases dentro das aspas('') por suas chaves de acesso, que foram geradas nas imagens acima.

Com essas variáveis configuradas, vamos realizar a autenticação na API do twitter com as linhas abaixo:

auth = tweepy.OAuthHandler(consumer_key,consumer_secret)
auth.set_access_token(access_token,access_token_secret)
api = tweepy.API(auth)

Após realizar a autenticação vamos buscar os nossos tweets:
tweets_publicados = tweepy.Cursor(api.search, q=sys.argv[1],lang="pt",tweet_mode="extended").items(int(sysv.argv[2]))

q=sys.argv[1] é o primeiro parâmetro passado, no nosso caso vai ser a palavra que desejamos procurar no twitter, caso deseje uma palavra fixa, substitua o sys.argv[1] pela sua palavra.


lang="pt" estamos indicando que iremos buscar apenas tweets que estejam em português.


tweet_mode="extended" estamos especificando que queremos ver o tweet inteiro, se omitir essa informação o tweet vem cortado.


item(int(sysv.argv[2])) estamos especificando a quantidade de tweets que queremos que a API retorne, neste estamos especificando um segundo parâmetro, caso queira um número fixo substitua o sysv.argv[2] pela quantidade desejada.


Agora vamos percorrer os nossos tweets obtidos:

for tweet in tweets_publicados:
    db.tweets.insert(tweet._json)
    print("Tweet inserido com sucesso !!")
Neste trecho de código estamos percorrendo a lista de tweets retornada pela API e inserindo um por um no nosso MongoDB, é necessário realizar uma conversão para o tipo json com o a função "._json"

Agora basta executar seu script da seguinte forma:

python scriptweet.py guilherme 5

Perceba que passamos dois parâmetros para o nosso script, no caso o primeiro parâmetro é a palavra que deseja pesquisa e o segundo parâmetro é a quantidade de tweets que desejamos pesquisar.



Script Inteiro:


from pymongo import MongoClient
import tweepy
import sys

connect = MongoClient('127.0.0.1')
db = connect['tweets_python']

consumer_key = 'YOUR CONSUMER KEY'
consumer_secret = 'YOUR SECRET CONSUMER KEY'


access_token = 'YOUR ACCESS TOKEN'
access_token_secret = 'YOUR SECRET ACCESS TOKEN'


auth = tweepy.OAuthHandler(consumer_key,consumer_secret)
auth.set_access_token(access_token,access_token_secret)
api = tweepy.API(auth)


public_tweets = tweepy.Cursor(api.search, q=sys.argv[1],lang="pt",tweet_mode="extended").items(int(sys.argv[2]))


for tweet in public_tweets:
   db.tweets.insert(tweet._json)
   print("Registro Inserido com sucesso !!")

Tweepy:

Tweepy é a API do twitter, caso queira saber mais sobre a API, acesse o link abaixo:

Pymongo:

Pymongo a API para conseguirmos acessar o mongodb via python, caso queria saber mais sobre a API pymongo, acesse o link abaixo:


Share:

2 comentários: