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:
Com essas variáveis configuradas, vamos realizar a autenticação na API do twitter com as linhas abaixo:
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:
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:
Agora basta executar seu script da seguinte forma:
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.
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:
Excelente post. Sem falar na editoração com as imagens. Parabéns Guilherme.
ResponderExcluirValeu Man!
Excluir