使用Python和Tweepy查询Twitter状态

使用Python和Tweepy查询Twitter状态,python,json,twitter,tweepy,Python,Json,Twitter,Tweepy,我尝试用tweet文本中包含的指定关键字查询指定用户的tweet。这是我的密码: # Import Tweepy, sleep, credentials.py import tweepy from time import sleep from credentials import * # Access and authorize our Twitter credentials from credentials.py auth = tweepy.OAuthHandler(consumer_key

我尝试用tweet文本中包含的指定关键字查询指定用户的tweet。这是我的密码:

# Import Tweepy, sleep, credentials.py
import tweepy
from time import sleep
from credentials import *

# Access and authorize our Twitter credentials from credentials.py
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth)

SCREEN_NAME = "BachelorABC"
KEYWORD = "TheBachelor"

def twtr2():
    raw_tweets = tweepy.Cursor(api.search, q=KEYWORD, lang="en").items(50)
    for tweet in raw_tweets:
        if tweet['user']['screen_name'] == SCREEN_NAME:
            print tweet
twtr2()
我得到的错误消息如下:

Traceback (most recent call last):
  File "test2.py", line 19, in <module>
    twtr2()
  File "test2.py", line 17, in twtr2
    if tweet['user']['screen_name'] == SCREEN_NAME:
TypeError: 'Status' object has no attribute '__getitem__'
然而,结果是可悲的:

Traceback (most recent call last):
  File "test2.py", line 35, in <module>
    load_tweet = json.loads(tweet)
  File "C:\Python27\lib\json\__init__.py", line 339, in loads
    return _default_decoder.decode(s)
  File "C:\Python27\lib\json\decoder.py", line 364, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
TypeError: expected string or buffer
回溯(最近一次呼叫最后一次):
文件“test2.py”,第35行,在
load_tweet=json.load(tweet)
文件“C:\Python27\lib\json\\ uuuuu init\uuuuu.py”,第339行,加载
返回\u默认\u解码器。解码
文件“C:\Python27\lib\json\decoder.py”,第364行,在decode中
obj,end=self.raw\u decode(s,idx=\u w(s,0.end())
TypeError:应为字符串或缓冲区
有人知道我的代码出了什么问题吗?你能帮我修一下吗

提前谢谢

问题在于

load_tweet = json.loads(tweet)
“tweet”对象不是JSON对象。如果您想使用JSON对象,请按照本文介绍如何在tweepy中使用JSON对象

为了实现您的目标(打印50条feed的每条tweet),我将遵循以下内容:


我明白了。以下是解决方案:

# Import Tweepy, sleep, credentials.py
import tweepy
from time import sleep
from credentials import *

# Access and authorize our Twitter credentials from credentials.py
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth)

SCREEN_NAME = "BachelorABC"
KEYWORD = "TheBachelor"
for tweet in tweepy.Cursor(api.search, q=KEYWORD, lang="en").items(200):
    if tweet.user.screen_name == SCREEN_NAME:
        print tweet.text
        print tweet.user.screen_name
请注意,这不是一种有效的方法来定位同时满足指定条件(屏幕名称和关键字)的tweet。这是因为我们先按关键字查询,然后按屏幕名称查询。如果关键字非常流行,比如我在这里使用的“TheBamber”,只有有限数量的tweet(200条),我们可能会发现200条tweet中没有一条是通过指定的屏幕名称发送的。我想如果我们可以先按屏幕名称查询,然后按关键字查询,也许会得到更好的结果。但这不在讨论范围之内


我将把你留在这里。

谢谢你的时间@ethanchewy我正在寻找指定屏幕名称和关键字的推文。你的答案大致是前20条推文。你知道如何找到这些条件下的tweet吗?@LinguisticsStudent请查看位于此处的最后一个代码片段:。您可以将屏幕名称存储在一个列表中,然后在该列表中搜索某个屏幕名称。请注意,Twitter对查询有严格的限制。谢谢@ethanchewy。您在上面引用的页面是从关注者或用户检索屏幕名称,而不是状态。如果我以后找到答案,我会更新。仅供参考,@ethanchewy我在上面发布了我的答案。
import tweepy

auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)

api = tweepy.API(auth)

public_tweets = api.home_timeline()
for tweet in public_tweets:
    print(tweet.text)
# Import Tweepy, sleep, credentials.py
import tweepy
from time import sleep
from credentials import *

# Access and authorize our Twitter credentials from credentials.py
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth)

SCREEN_NAME = "BachelorABC"
KEYWORD = "TheBachelor"
for tweet in tweepy.Cursor(api.search, q=KEYWORD, lang="en").items(200):
    if tweet.user.screen_name == SCREEN_NAME:
        print tweet.text
        print tweet.user.screen_name