要用Python读取Gmail正文中的特定数据,你可以使用Google的Gmail API来访问邮件,然后使用正则表达式或其他文本处理方法来提取所需的数据。以下是一个详细的步骤指南:
你需要安装google-auth
、google-auth-oauthlib
、google-auth-httplib2
和google-api-python-client
库。
pip install --upgrade google-api-python-client google-auth-httplib2 google-auth-oauthlib
以下是一个示例脚本,它会读取Gmail中的邮件并提取正文中的特定数据。
import os.path
import base64
import re
from google.auth.transport.requests import Request
from google.oauth2.credentials import Credentials
from google_auth_oauthlib.flow import InstalledAppFlow
from googleapiclient.discovery import build
# 如果修改了这些范围,请删除文件 token.json
SCOPES = ['https://www.googleapis.com/auth/gmail.readonly']
def main():
"""显示用户的Gmail中的邮件正文并提取特定数据"""
creds = None
# token.json文件存储用户的访问和刷新令牌,并且在授权流程中自动创建
if os.path.exists('token.json'):
creds = Credentials.from_authorized_user_file('token.json', SCOPES)
# 如果没有(有效的)凭据,请让用户登录
if not creds or not creds.valid:
if creds and creds.expired and creds.refresh_token:
creds.refresh(Request())
else:
flow = InstalledAppFlow.from_client_secrets_file(
'credentials.json', SCOPES)
creds = flow.run_local_server(port=0)
# 将凭据保存到token.json文件中,以便下次使用
with open('token.json', 'w') as token:
token.write(creds.to_json())
# 使用凭据调用Gmail API
service = build('gmail', 'v1', credentials=creds)
# 获取用户的邮件列表
results = service.users().messages().list(userId='me', maxResults=10).execute()
messages = results.get('messages', [])
if not messages:
print('No messages found.')
else:
print('Messages:')
for message in messages:
msg = service.users().messages().get(userId='me', id=message['id']).execute()
msg_str = base64.urlsafe_b64decode(msg['payload']['body']['data']).decode('utf-8')
print(f"Message snippet: {msg['snippet']}")
print(f"Message body: {msg_str}")
# 使用正则表达式提取特定数据
pattern = re.compile(r'your_regex_pattern_here')
matches = pattern.findall(msg_str)
for match in matches:
print(f"Found data: {match}")
if __name__ == '__main__':
main()
token.json
文件,如果存在则使用它来获取凭据。如果不存在或凭据无效,则会引导用户通过OAuth 2.0流程进行授权,并生成新的token.json
文件。领取专属 10元无门槛券
手把手带您无忧上云