Skip to content

Instantly share code, notes, and snippets.

@marcoscastro
Last active September 1, 2022 00:06
Show Gist options
  • Save marcoscastro/bc43e1741b4af47fda0ef289093aae01 to your computer and use it in GitHub Desktop.
Save marcoscastro/bc43e1741b4af47fda0ef289093aae01 to your computer and use it in GitHub Desktop.
Obtendo tweets de usuário com Python e tweepy
# acessar https://apps.twitter.com para criar uma nova aplicação
# cada aplicação tem suas próprias chaves
import tweepy
import re
# acessar a aba "Keys and Access Tokens"
# passa o Consumer Key e o Consumer Secret
auth = tweepy.OAuthHandler('46pvnSwIVylfWepbPsP4433wL', 'xWDPHaUkk0ub93qj1DaYgJcO8QtkPUhNFIE7uBAvzbSVLLpLzR')
# define o token de acesso
# para criar basta clicar em "Create my access token"
# passa o "Access Token" e o "Access Token Secret"
auth.set_access_token('1952916806-9WbU9ROPLd4aVPprQZqWJhaW4RSXrBw4oK8A4Ow',
'gW5iuYPtrTxVhPmQxBemsKz6jCAOqbYx1fT0ewKHFyAkG')
# cria um objeto api
api = tweepy.API(auth)
# obtém tweets de um dado usuário
def obter_tweets(usuario, limite=10):
resultados = api.user_timeline(screen_name=usuario, count=limite, tweet_mode='extended')
tweets = [] # lista de tweets inicialmente vazia
for r in resultados:
# utiliza expressão regular para remover a URL do tweet
# http pega o início da url
# \S+ pega os caracteres não brancos (o final da URL)
tweet = re.sub(r'http\S+', '', r.full_text)
tweets.append(tweet.replace('\n', ' ')) # adiciona na lista
return tweets # retorna a lista de tweets
# escreve os tweets em um arquivo 'tweets.txt'
tweets = obter_tweets(usuario='jairbolsonaro', limite=100)
with open('tweets.txt', 'w') as f:
f.write('\n'.join(tweets))
@vanderleik
Copy link

Olá,
estou aprendendo a usar o Python, e aprendi a buscar tweets com o uso do MongoDB. Vi o seu código e tentei usá-lo, porque é diferente daquele que usei. Mas ao executar a última linha de comando, ele retorna a mensagem abaixo:

---------------------------------------------------------------------------
UnicodeEncodeError                        Traceback (most recent call last)
<ipython-input-9-3d36259a11ba> in <module>()
      2 tweets = obter_tweets(usuario='jairbolsonaro', limite=100)
      3 with open('tweets.txt', 'w') as f:
----> 4         f.write('\n'.join(tweets))

~\Anaconda3\lib\encodings\cp1252.py in encode(self, input, final)
     17 class IncrementalEncoder(codecs.IncrementalEncoder):
     18     def encode(self, input, final=False):
---> 19         return codecs.charmap_encode(input,self.errors,encoding_table)[0]
     20 
     21 class IncrementalDecoder(codecs.IncrementalDecoder):

UnicodeEncodeError: 'charmap' codec can't encode character '\U0001f44d' in position 29: character maps to <undefined>

Como eu faço pra resolver esse erro?

@vanderleik
Copy link

Não precisa mais, acabei de descobrir.

# usei o encoding='utf8' e resolveu!
tweets = obter_tweets(usuario='ge_fla', limite=100)
with open('tweets.txt', 'w', encoding='utf8') as f:
	f.write('\n'.join(tweets))

@dsilva0101
Copy link

Olá, como eu faço para retornar também o o user_id do primeiro usuário marcado no tweet?? Alguém pode me ajudar?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment