geekdoc-python-zh/docs/pythonlibrary/using-twitter-with-python-a...

8.6 KiB
Raw Permalink Blame History

通过 Python 和 Tweepy 使用 Twitter

原文:https://www.blog.pythonlibrary.org/2019/08/06/using-twitter-with-python-and-tweepy/

Twitter 是一个流行的社交网络人们用它来相互交流。Python 有几个可以用来与 Twitter 交互的包。这些软件包对于创建 Twitter 机器人或下载大量数据进行离线分析非常有用。其中一个比较流行的 Python Twitter 包叫做 Tweepy 。在本文中,您将学习如何使用 Tweepy 和 Twitter。

Tweepy 让您可以访问 Twitter 的 API它公开了以下内容(还有更多!):

  • 小鸟叫声
  • 转发
  • 喜欢
  • 直接消息
  • 追随者

这允许你用 Tweepy 做很多事情。让我们来看看如何开始吧!


入门指南

您需要做的第一件事是创建一个 Twitter 帐户,并获得访问 Twitter 所需的凭证。为此,你需要在这里申请一个开发者账户。

创建之后,您可以获得或生成以下内容:

  • 消费者 API 密钥
  • 消费者 API 秘密
  • 访问令牌
  • 访问机密

如果您丢失了这些项目,您可以返回您的开发者帐户,重新生成新的项目。也可以撤销旧的。

注意:默认情况下,您收到的访问令牌是只读的。如果你想用 Tweepy 发送推文,那么你需要确保将应用类型设置为“读写”。


安装 Tweepy

接下来,您需要安装 Tweepy 包。这是通过使用 pip 实现的:

pip install tweepy

现在您已经安装了 Tweepy您可以开始使用它了


使用 Tweepy

你可以使用 Tweepy 以编程的方式在 Twitter 上做几乎任何事情。例如,您可以使用 Tweepy 来获取和发送推文。您可以使用它来访问有关用户的信息。你可以转发、关注/取消关注、发帖等等。

让我们看一个获取用户家庭时间表的例子:

import tweepy

consumer_key = 'CONSUMER_KEY'
consumer_secret = 'CONSUMER_SECRET'
access_token = 'ACCESS_TOKEN'
access_secret = 'ACCESS_SECRET'

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

api = tweepy.API(auth)

tweets = api.home_timeline()
for tweet in tweets:
    print('{real_name} (@{name}) said {tweet}\n\n'.format(
        real_name=tweet.author.name, name=tweet.author.screen_name,
        tweet=tweet.text))

这里的前几行代码是您在 Twitter 开发者个人资料页面上找到的凭证。实际上不建议在您的代码中硬编码这些值,但是为了简单起见,我在这里这样做了。如果您要创建共享的代码,您会希望让代码的用户将他们的凭证导出到他们的环境中,并使用 Python 的os.getenv()或通过使用argparse的命令行参数。

接下来,您通过创建一个OAuthHandler()登录 Twitter

对象并使用恰当命名的set_access_token()设置访问令牌

功能。然后你可以创建一个API()

允许您访问 Twitter 的实例。

在这种情况下,您调用home_timeline()

它会返回您家庭时间轴中的前二十条推文。这些推文来自你的朋友或关注者,也可能是 Twitter 决定在你的时间表中推广的随机推文。在这里您可以打印出作者的姓名、Twitter 句柄以及他们的推文文本。

让我们来看看您是如何使用api获取自己的信息的

您之前创建的对象:

>>> me = api.me()
>>> me.screen_name
'driscollis'
>>> me.name
'Mike Driscoll'
>>> me.description
('Author of books, blogger @mousevspython and Python enthusiast. Also part of '
 'the tutorial team @realpython')

您可以使用api

来获得关于你自己的信息。上面的代码演示了如何获取您的屏幕名称、实际名称以及您在 Twitter 上设置的描述。你可以得到比这更多的东西。比如你可以获得你的关注者,时间线等。


获取推文

使用 Tweepy 获取推文也很容易。如果你知道别人的用户名,你可以获得自己或别人的推文。

让我们从获取您的推文开始:

import tweepy

consumer_key = 'CONSUMER_KEY'
consumer_secret = 'CONSUMER_SECRET'
access_token = 'ACCESS_TOKEN'
access_secret = 'ACCESS_SECRET'

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

api = tweepy.API(auth)
my_tweets = api.user_timeline()
for t in my_tweets:
    print(t.text)

在这里,您像在上一节中一样连接到 Twitter。然后你叫user_timeline()

以获得对象列表,然后对其进行迭代。在这种情况下,您最终只能打印出 tweet 的文本。

让我们尝试获取一个特定的用户。在这种情况下,我们将使用一个相当受欢迎的程序员,凯利沃恩:

>>> user = api.get_user('kvlly')
>>> user.screen_name
'kvlly'
>>> user.name
'Kelly Vaughn 🐞'
>>> for t in tweets:
        print(t.text)

她发了很多微博,所以我不会在这里复制她的微博。然而正如你所看到的,获得一个用户是很容易的。你需要做的就是通过get_user()

一个有效的 Twitter 用户名,然后你就可以访问该用户的任何公开信息。


发送推文

看推文很好玩但是发呢Tweepy 也可以为您完成这项任务。

让我们来看看如何实现:

import tweepy

consumer_key = 'CONSUMER_KEY'
consumer_secret = 'CONSUMER_SECRET'
access_token = 'ACCESS_TOKEN'
access_secret = 'ACCESS_SECRET'

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

api = tweepy.API(auth)

api.update_status("This is your tweet message")

您应该关注的主要代码是最后一行:update_status()

。这里你传入一个字符串,它是 tweet 消息本身。只要没有错误,您应该会在您的 Twitter 时间线中看到这条推文。

现在我们来学习如何发送附有照片的推文:

import tweepy

consumer_key = 'CONSUMER_KEY'
consumer_secret = 'CONSUMER_SECRET'
access_token = 'ACCESS_TOKEN'
access_secret = 'ACCESS_SECRET'

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

api = tweepy.API(auth)

api.update_with_media('/path/to/an/image.jpg',
                      "This is your tweet message")

在这种情况下,你需要使用update_with_media()

方法,它接受一个到您想要上传的图片的路径和一个字符串,也就是 tweet 消息。

请注意,虽然 update_with_media() 易于使用,但也不推荐使用。

所以让我们更新这个例子,改为使用 media_upload

import tweepy

consumer_key = 'CONSUMER_KEY'
consumer_secret = 'CONSUMER_SECRET'
access_token = 'ACCESS_TOKEN'
access_secret = 'ACCESS_SECRET'

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

api = tweepy.API(auth)

media_list = []
response = api.media_upload('/home/mdriscoll/Downloads/sebst.png')
media_list.append(response.media_id_string)
api.update_status("This is your tweet message", media_ids=media_list)

在这里,您将媒体上传到 Twitter并从返回的响应中获取它的 id 字符串。然后将该字符串添加到 Python 列表中。最后,您使用 update_status() 来发布一些东西,但是您也将 media_ids 参数设置为您的图片列表。


列出关注者

我要讲的最后一个话题是如何在 Twitter 上列出你的关注者。

让我们来看看:

import tweepy

consumer_key = 'CONSUMER_KEY'
consumer_secret = 'CONSUMER_SECRET'
access_token = 'ACCESS_TOKEN'
access_secret = 'ACCESS_SECRET'

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

api = tweepy.API(auth)

followers = api.followers()
for follower in followers:
    print(follower.screen_name)

此代码将列出您帐户的最新 20 个关注者。你只需要打电话给followers()

去拿名单。如果你需要得到的不仅仅是最新的 20 个,你可以使用count

参数来指定需要多少个结果。


包扎

使用 Tweepy您可以做更多事情。例如你可以获得赞发送和阅读直接消息上传媒体等等。这是一个非常好和易于使用的软件包。您还可以使用 Tweepy 实时读写 Twitter这允许您创建一个 Twitter 机器人。如果你还没有尝试过 Tweepy你绝对应该试一试。很好玩啊


相关阅读