我使用以下代码回复推文" 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)
答案 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也有几个问题。他们将为您提供有关解析推文的更有效方法的其他想法。