geekdoc-python-zh/docs/pythonlibrary/how-to-connect-to-twitter-w...

6.2 KiB
Raw Permalink Blame History

如何用 Python 连接 Twitter

原文:https://www.blog.pythonlibrary.org/2014/09/26/how-to-connect-to-twitter-with-python/

有几个第三方包包装了 Twitter 的 API。我们将关注 tweepy 和 T2 的 twitter。tweepy 文档比 twitter 的更广泛一些,但是我觉得 twitter 包有更多具体的例子。让我们花一些时间来看看如何使用这些软件包!


入门指南

要开始使用 Twitter 的 API您需要创建一个 Twitter 应用程序。为此,你必须去他们的开发者网站创建一个新的应用程序。创建应用程序后,您将需要获得您的 API 密钥(或者生成一些)。您还需要生成您的访问令牌。

因为 Python 中没有包含这两个包,所以您也需要安装它们。要安装 tweepy只需执行以下操作:


pip install tweepy

要安装 twitter你可以做同样的事情:


pip install twitter

现在你应该准备好出发了!


发布状态更新

你应该能够用这些包做的一个基本事情是在你的 Twitter 账户上发布一个更新。让我们看看这两个软件包在这方面是如何工作的。我们从十二层开始。


import tweepy

auth = tweepy.OAuthHandler(key, secret)
auth.set_access_token(token, token_secret)
client = tweepy.API(auth)
client.update_status("#Python Rocks!")

嗯,这是相当直截了当的。我们必须用我们的密钥创建一个 OAuth 处理程序,然后设置访问令牌。最后,我们创建了一个表示 Twitter API 的对象,并更新了状态。这个方法对我很有效。现在让我们看看我们是否能让 twitter 包工作。


import twitter

auth=twitter.OAuth(token, token_secret, key, secret)
client = twitter.Twitter(auth=auth)
client.statuses.update(status="#Python Rocks!")

这段代码也非常简单。事实上,我认为 twitter 包的 OAuth 实现比 tweepy 的更干净。

注意:我在使用 twitter 包时有时会得到以下错误:错误的认证数据,代码 215 。我不完全确定为什么当你查找这个错误时,它应该是因为你使用 Twitter 的旧 API 而引起的。如果是这样的话,那么它就永远不会起作用。

接下来,我们将看看如何获得我们的时间线。


获取时间线

在这两个包中获得你自己的 Twitter 时间表真的很容易。让我们来看看 tweepy 的实现:


import tweepy

auth = tweepy.OAuthHandler(key, secret)
auth.set_access_token(token, token_secret)
client = tweepy.API(auth)

timeline = client.home_timeline()

for item in timeline:
    text = "%s says '%s'" % (item.user.screen_name, item.text)
    print text

所以在这里我们得到认证,然后我们调用 home_timeline() 方法。这将返回一个对象的 iterable我们可以循环遍历这些对象并从中提取各种数据。在这种情况下我们只提取屏幕名称和 Tweet 的文本。让我们看看 twitter 包是如何做到这一点的:


import twitter

auth=twitter.OAuth(token, token_secret, key, secret)
client = twitter.Twitter(auth=auth)

timeline = client.statuses.home_timeline()
for item in timeline:
    text = "%s says '%s'" % (item["user"]["screen_name"],
                             item["text"])
    print text

twitter 包非常相似。主要区别在于它返回一个字典列表。

如果你想得到别人的时间线。在十二岁时,你会这样做:


import tweepy

auth = tweepy.OAuthHandler(key, secret)
auth.set_access_token(token, token_secret)
client = tweepy.API(auth)

user = client.get_user(screen_name='pydanny')
timeline = user.timeline()

twitter 包有点不同:


import twitter

auth=twitter.OAuth(token, token_secret, key, secret)
client = twitter.Twitter(auth=auth)

user_timeline = client.statuses.user_timeline(screen_name='pydanny')

在这种情况下,我认为 twitter 包更干净一些,尽管有人可能会说 tweepy 的实现更直观。


让你的朋友和追随者

几乎每个人在 Tritter 上都有朋友(他们追随的人)和追随者。在本节中我们将了解如何访问这些项目。twitter 包并没有一个很好的例子来寻找你的 Twitter 朋友和追随者,所以在这一节我们将只关注 tweepy。


import tweepy

auth = tweepy.OAuthHandler(key, secret)
auth.set_access_token(token, token_secret)
client = tweepy.API(auth)

friends = client.friends()

for friend in friends:
    print friend.name

如果您运行上面的代码,您会注意到它打印出来的最大朋友数是 20。如果你想打印出你所有的朋友那么你需要使用光标。使用光标有两种方式。您可以使用它来返回页面或特定数量的项目。在我的例子中我关注了 32 个人,所以我选择了 items 的工作方式:


for friend in tweepy.Cursor(client.friends).items(200):
    print friend.name

这段代码将迭代多达 200 项。如果你有很多朋友或者你想迭代别人的朋友,但是不知道他们有多少,那么使用 pages 方法更有意义。让我们来看看这可能是如何工作的:


for page in tweepy.Cursor(client.friends).pages():
    for friend in page:
        print friend.name

这很简单。获取您的关注者列表完全相同:


followers = client.followers()
for follower in followers:
    print follower.name

这也将只返回 20 个项目。我有很多追随者,所以如果我想获得他们的列表,我必须使用上面提到的光标方法之一。


包扎

这些包提供了比本文所涵盖的更多的功能。我特别推荐看 tweepy因为使用 Python 的自省工具比 twitter 包更直观、更容易理解。如果你还没有一堆这样的应用程序,你可以很容易地使用 tweepy并围绕它创建一个用户界面让你与你的朋友保持同步。另一方面对于初学者来说这仍然是一个很好的程序。


附加阅读