python - 如何阅读整条消息而不仅仅是片段
问题描述
msg = service.users().messages().get(userId='me', id=message['id']).execute()
print(msg['snippet'])
我目前正在使用上面的代码,它没有得到整个消息。我在文档中看到 google API 有 raw 和 full 选项,但是 raw 选项没有以可读的方式打印,我无法让 full 选项工作。
谢谢 !
解决方案
这对我来说是这样的:
# 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
信息提取将取决于消息的模式。就我而言,我收到的所有消息都具有相同的模式。
推荐阅读
- r - 如何将使用 UNIX 纪元秒的 X 轴格式化为 R 中的年/月?
- python - 如何使用 Python 读取邮件的邮件正文?
- cypress - 在 cy.visit 之前执行 cy.request 似乎会导致 cy.visit 失败
- javascript - 根据每天的小时数为一周分组天数
- phpspreadsheet - PHP电子表格:将数据保存到新工作表后,之前工作表的数据被删除
- node.js - 在展示我的招摇之前要求提供凭据
- r - 曲线错误(expr = x,from = from,to = to,xlim = xlim,ylab = ylab,:'expr' 未计算为长度为 'n' 的对象
- swift - 如何快速从嵌入式视图容器更新容器视图
- .net-core - 将 JsonPatchDocument 与 Blazor 一起使用时出现意外错误
- java - 如何比较java中基类的派生对象?