用Tweepy自动回复

时间:2016-01-17 13:56:35

标签: python twitter tweepy

我使用以下代码回复推文" Hello World"的用户。它似乎没有找到任何用户。

你能看到代码有什么问题吗?

#!/usr/bin/env python
import tweepy
#from our keys module (keys.py), import the keys dictionary
from keys import keys

CONSUMER_KEY = keys['consumer_key']
CONSUMER_SECRET = keys['consumer_secret']
ACCESS_TOKEN = keys['access_token']
ACCESS_TOKEN_SECRET = keys['access_token_secret']

auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth.set_access_token(ACCESS_TOKEN, ACCESS_TOKEN_SECRET)
api = tweepy.API(auth)

twts = api.search(q="Hello World!")     

#list of specific strings we want to check for in Tweets
t = ['Hello world!',
    'Hello World!',
    'Hello World!!!',
    'Hello world!!!',
    'Hello, world!',
    'Hello, World!']

for s in twts:
    for i in t:
        if i == s.text:
            sn = s.user.screen_name
            print s
            m = "@%s Hello!" % (sn)
            s = api.update_status(m, s.id)

2 个答案:

答案 0 :(得分:0)

只是查看网络搜索的结果

https://twitter.com/search?q=Hello%20World!

结果通常有你好和世界,而不是你想要的具体形式。您可以通过使用引号(例如

)来缩小API调用范围

但你仍会找到像

这样的结果

“Hello World!听这首歌!https://t.co/x8QUmIHrVk \ n我的CMD NJ家庭....... NSR& NSP”

答案 1 :(得分:0)

一般的良好做法是打印您正在使用的对象,以查看它们包含的内容。

在上面的方法中,您正在检查i == s.text

仅当推文 包含列表True中的完全匹配时,才会评估t。所以,如果有人发推文“Hello World!多么美好的世界”,你的条件将评估False

for s in twts:
    print s.text # Let's see what's in s.text
    for i in t:
        if i == s.text:
            sn = s.user.screen_name
            print (sn,s.text)

以下是前三个s.text个对象:

  

RT @TheCamcorderApp:Hello World;)

     

@KaoruAIX没有儿子的松树! Vamos a hacer un juego en equipos para fomentarlauniónde你好,World y FAIX(?)

     

infosbench #TILab #SmartCity #OpenAirLab - 你好世界! 9887人就座!

总之,请使用in运算符探索特定方法。使用i == s.text:而不是i in s.text:。标记tweepy的SO也有几个问题。他们将为您提供有关解析推文的更有效方法的其他想法。

相关问题