-3

试图运行这个 twitter python 机器人。它基本上只需要设置令牌(已经设置)和标签来搜索和收藏。我是编码新手,所以我真的不知道我要去哪里。刚刚从 github 克隆了这段代码并尝试运行它。运行 python 2.7.2

"""

A simple Twitter bot using the Twitter Python library that finds users who tweet about "Christmas gift ideas,"
favorites their tweet, follows the users and sends them a friendly tweet with Amazon links of popular gift ideas.

"""

import urllib
import simplejson
import twitter

consumer_key = ''
consumer_secret = ''
access_token_key = ''
access_token_secret = ''

def searchTweets(query):
        search = urllib.urlopen("http://search.twitter.com/search.json?q="+query)
        dict = simplejson.loads(search.read())
        return dict

api = twitter.Api(consumer_key = 'consumer_key', consumer_secret = 'consumer_secret', access_token_key = 'access_token_key', access_token_secret = 'access_token_secret')
tweets = searchTweets("hashtag")
msg = "Tweet message"

for i in range(len(tweets["results"])):
        tweeter = tweets["results"][i]["from_user"]
        status = twitter.Api.GetStatus(api, tweets["results"][i]["id"])
        api.CreateFavorite(status)
        api.CreateFriendship(tweeter)
        api.PostUpdate('@' + tweeter + ' ' + msg)

我已经更改了令牌信息和东西,但我收到了这个错误:

Traceback (most recent call last):
  File "TwitterBot.py", line 26, in <module>
    for i in range(len(tweets["results"])):
KeyError: 'results'

我究竟做错了什么?我正在使用python-twitterpip.

4

1 回答 1

0

字典“推文”中没有关键的“结果”。

要找出其中的内容,请在 for 循环之前添加这行代码:

print tweets

它会打印出这样的东西:

result = {"items": [{ "owner": { "reputation": 1480, "user_id": 2254048 },"is_accepted": false,"score": 0, "answer_id": 32548557, "question_id": 32546733}]}

在这里,嵌套列表中有一个嵌套字典。那可能是你的问题。在此示例中,您需要使用以下代码:

print result["items"][0]["owner"]["user_id"]

只是为了查看 的用户 ID 2254048。检查 twitter 是否没有提供类似的内容,并确保您 a) 引用了一个存在的键,并且 b) 如果它是嵌套的,那么您正在正确地使用其他嵌套项引用它。

于 2015-09-13T10:17:57.700 回答