terça-feira, 30 de setembro de 2014

Tweets em um arquivo CSV

Após ter sucesso na postagem e leitura dos tweets em tempo real, precisamos de algo mais útil para seguir o projeto, pois não basta só exibir tais tweets, temos que armazená-los para jogar em um banco de dados e no futuro analisarmos. Assim, a minha idéia foi um arquivo, pois seria fácil extrair depois em qualquer linguagem que eu desejar usar.

Pesquisando sobre códigos, achei um código bem sucinto e interessante que transformava os tweets em um arquivo CSV. Bom, mas o que é um arquivo CSV?

Arquivo CSV (Comma-separeted values) possui uma primeira linha como um cabeçalho que define os campos do objeto em questão e em seguido as instâncias do objeto, com os valores campos separados por vírgula

ex: 
User, data e hora, texto do tweet
Lobatadas,2014-09-30 21:53:10,"Preso há apenas 10 meses, Delúbio já vai cumprir pena em casa.
Fosse um cidadão comum, seria assim também? #mensalão #eleicoes2014"

Colocando em prática o código abaixo, infelizmente o programa não funcionava. Estava usando a última versão d tweepy disponivel na conta do GitHub. O erro que estava ocorrendo tinha poucas referências na internet e nenhuma com solução. Concluí que vinha de alguma classe dentro do código do tweepy. Assim, entrei no github e mandei email para alguns dos colaboradores do código (open source) e obtive uma resposta logo em seguida. 

" The latest Tweepy code from the git repostiroy has some bugs. I'd recommend using version 2.3.0 for now.

Good luck with your project! "


Tinha testado algumas outras versões mas que continuavam com um mesmo erro ou algum erro diferente.
Então, baixei a versão 2.3 e o código começou a funcionar, gerando alguns conflitos.
por exemplo: quando o tweet tem uma geolocalização, não é possivel capturá-lo e está dando um erro de "rate limit exceed" que precisa ser consertado.


Código usado como exemplo:
#!/usr/bin/python
import tweepy
import csv #Import csv
auth = tweepy.auth.OAuthHandler('XXXXXX', 'XXXXXXX')
auth.set_access_token('XXX-XXX', 'XXX')

api = tweepy.API(auth)
# Open/Create a file to append data
csvFile = open('result.csv', 'a')
#Use csv Writer
csvWriter = csv.writer(csvFile)

for tweet in tweepy.Cursor(api.search, 
                    q="google", 
                    since="2014-02-14", 
                    until="2014-02-15", 
                    lang="en").items():
    #Write a row to the csv file/ I use encode utf-8
    csvWriter.writerow([tweet.created_at, tweet.text.encode('utf-8')])
    print tweet.created_at, tweet.text
csvFile.close()

Nenhum comentário:

Postar um comentário