【问题标题】:How to read in whole message not just snippet如何阅读整条消息而不仅仅是片段
【发布时间】:2020-11-29 13:37:52
【问题描述】:
msg = service.users().messages().get(userId='me', id=message['id']).execute()
print(msg['snippet'])
我目前正在使用上面的代码,它没有得到完整的信息。我在文档中看到 google API 有 raw 和 full 选项,但是 raw 选项不能以可读的方式打印,我无法让 full 选项工作。
谢谢!
【问题讨论】:
标签:
python
google-api
gmail-api
google-api-python-client
【解决方案1】:
这就是我的工作方式:
# Gets message header first
msg_header = service.users().messages().get(
userId=user_id,
id=msg_id,
format="full",
metadataHeaders=None
).execute()
# Gets message body from header
body = base64.urlsafe_b64decode(msg_header.get("payload").get("body")\
.get("data").encode("ASCII")).decode("utf-8")
正文是 HTML 格式的,所以在我的例子中,我使用 BeautifulSoup 来提取我需要的信息,如下所示:
soup = bs(body, 'html.parser')
# Loop on e-mail table
for row in soup.findAll('tr'):
aux = row.findAll('td')
info[aux[0].string] = aux[1].string
信息提取将取决于消息的模式。就我而言,我收到的所有消息都具有相同的模式。