# 创建一个 gmail 词云

> 原文： [https://pythonspot.com/creating-a-gmail-wordcloud/](https://pythonspot.com/creating-a-gmail-wordcloud/)

![wordcloud python](img/9bd0f09416c906b80796a1f54cff8df4.jpg)

基于 gmail 的词云

我们创建了一个 python 程序，该程序**根据您的 gmail** 帐户生成一个词云。 输出内容可能看起来像这样，具体取决于您电子邮件的内容。

首先，您将需要一个与 gmail 服务进行交互的小脚本。 我们创建了一个与 gmail 交互的小脚本。 它依赖于已安装的 [gmaillib](https://github.com/thedjpetersen/gmaillib) ，您需要进行以下设置：允许“不太安全”的应用程序访问 gmail 服务器： [https://www.google.com/settings/security/lesssecureapps](https://www.google.com/settings/security/lesssecureapps)

## Gmail 示例：


```py
#!/usr/bin/env python
import gmaillib
from collections import Counter

def getMails(cnt,account, start,amount):
    emails = account.inbox(start, amount)

    for email in emails:
        cnt[email.sender_addr] += 1

amountOfMails = 100
cnt = Counter()
username = raw_input("Gmail account: ")
password = raw_input("Password: ")

account = gmaillib.account(username, password)

getMails(cnt,account,0,amountOfMails)
print(cnt)

```

如果此脚本成功运行，则说明您已安装了几乎所有要求。 您还将需要名为[`wordcloud`](https://github.com/amueller/word_cloud)的库。 我们重建系统，以便得到一个包含消息主体的长字符串，并将其作为输入输入到`wordcloud`实例中。 可变数量包含要提取的邮件数。 我们已将其设置为 100，但您可以使用`get_inbox_count()`将其设置为所有邮件，也可以仅提取上周的所有电子邮件。

## 最终程序：


```py
#!/usr/bin/env python
import gmaillib
from collections import Counter
from wordcloud import WordCloud
import matplotlib.pyplot as plt

amount = 100
cnt = Counter()
username = raw_input("Gmail account: ")
password = raw_input("Password: ")

account = gmaillib.account(username, password)

emails = account.inbox(0, amount)

data = ""
for email in emails:
    data = data + str(email.body)

wordcloud = WordCloud().generate(data)
plt.imshow(wordcloud)
plt.axis("off")
plt.show()

```