采用pyautogui和pyperclip获取163邮箱邮件内容

采用pyautoguipyperclip获取163邮箱邮件内容

前言

23年暑假找了个公司赚点生活费。其中我的任务是copy163邮箱的邮件,然后将邮件的内容复制到公司的销售系统(53快服)。下图为客服系统里面我需要录入的信息,这些信息是根据邮件内容来填写的。

销售系统提交界面

任务可以分以下几步:

  • 1,复制邮件内容
  • 2,根据邮件内容,分割并提取信息
  • 3,将信息填到客服系统

如果不使用脚本,原始人纯手戳,每天一两来条邮件,个人感觉还是可以接受的,那么一天两千多条,就是不吃饭也干不完。

下面这个图是每天要录入系统的邮件数据量,可以看到一天邮件数量峰值达到2600条左右,可以说这个量以及不再是纯手戳能够承受得了的了

当我接到这个任务的时候离数据爆发增长还有不到一周时间(果然公司是要招一个牛马来干活

当我接到这个任务的时候离数据爆发增长还有不到一周时间。为此,在前两天干完活的闲余时间琢磨如何使用python帮我完成这个任务。

解决办法

经过我大量查找网上的相关资料,总结为以下几个方法

  1. 方法一、通过Urllib实现
    这种方法主要是应用requests请求的方法,获取邮件需要找到对应的url链接。步骤如下:

    - 1. 模拟登录163邮箱,并获取收件箱邮件的url;
    - 2. 获取cookie信息
    - 3. 提取邮件对应的sid数据
    - 4. 利用sid和cookie重新请求,获得响应
    - 5. 提取收件箱列表信息
    
  2. 方法二、使用第三方的邮件协议
    这种方法需要邮箱打开第三方的邮件协议。有对应的第三方库专门处理邮件。由于我当时的邮箱没有权限开打开第三方邮件协议,因此就没考虑这种方法。

  3. 方法三、使用selenium模拟登录邮箱,获取网页信息,然后提取

    selenium的用法很接近于人的操作习惯,实现的过程主要分为两步:

    - 1.使用selenium模拟登录邮箱;	
    - 2.使用beautifulsoup处理网页,提取未读邮件的信息。
    
  4. 方法四、模拟点击,模拟复制邮件,然后提取信息
    这个是类似selenium的思路想到的。大量的邮件信息提取,我们可以人为打开浏览器,进入163收件箱邮件列表页,然后使用pyautoguipyperclip模拟键鼠操作,循环复制、粘贴、保存每一封邮件。

传送门

方法一的实现可以参考我的这篇文章:使用selenium和requests的方法获取163邮箱的所有邮件

方法三的实现可以参考我的这篇文章:采用selenium和beautifulsoup获取163邮箱邮件内容

刚开始接触这个任务时,没有考虑太多,脑子直接想到的是方法四,该方法难度低,好实现,不用处理登录邮箱的问题。缺点一方面是该方法需要一个较快的网络环境,因为获取邮件的本质还是等待浏览器加载全部信息。另一方面,该方法获取邮件的速度并不快,太快会导致邮件在浏览器加载卡顿。

方法四的实现:

方法四是很容易想到的,程序执行过程和人的操作过程一模一样,我们人为登录163邮箱,设置邮箱界面

邮箱设置界面

一页显示15个邮件差不多是电脑屏幕最大容纳的了,更大的需要滚轮滑动。使用程序复制每一封邮件的发件人,点击进入邮件内部,复制邮件内容,提取邮件信息,然后重复这个过程。

要使用到的两个第三方库是pyperclippyautogui

  1. pyautogui

    • pyautogui是一个用于自动化图形界面操作的库。

    • 它可以模拟鼠标移动、点击、键盘输入等操作。

    • pyautogui适用于Windows、macOS和Linux等多个平台。

    • 示例用法:

      import pyautogui
      
      # 获取屏幕尺寸
      screen_width, screen_height = pyautogui.size()
      
      # 移动鼠标到指定位置
      pyautogui.moveTo(100, 100, duration=1)
      
      # 模拟鼠标点击
      pyautogui.click(100, 100)
      
      # 模拟键盘输入
      pyautogui.typewrite("Hello, world!")
      
      # 执行 Ctrl+A 操作
      pyautogui.hotkey( 'ctrl' , 'a' )
      
      
  2. pyperclip

    • pyperclip是一个用于访问剪贴板的库。

    • 它提供了简单的方法来复制和粘贴文本。

    • pyperclip支持Windows、macOS和Linux等多个平台。

    • 示例用法:

      import pyperclip
      
      # 复制文本到剪贴板
      pyperclip.copy("Hello, world!")
      
      # 从剪贴板粘贴文本
      text = pyperclip.paste()
      print(text)
      

在这里插入图片描述

提取邮件的代码如下:

import pyautogui
import pyperclip
m=0
numble=4#numble为邮件数量
def getStr(): 
    for i in range(numble): 
    #获取发件人信息   
        pyautogui.moveTo(247,330+(i+m)*44.2,duration=0.2)#移动鼠标到发件人的坐标1,停顿0.2s
        pyautogui.dragTo(438,330+(i+m)*44.2,duration=0.25,button='left')#鼠标左键长按拖动
        pyautogui.hotkey( 'ctrl' , 'c' )#复制发件人信息
        taxt_flag=pyperclip.paste()#发件人的信息保存在taxt_flag
    #点击进入邮件,复制邮件内容
        pyautogui.click(560,330+(i+m)*44.2,button='left') #鼠标移动到坐标2,鼠标左键点击
        
        pyautogui.moveTo(1650,430,duration=0.35)
        pyautogui.click() 
        #鼠标左键点击空白区域
        
        pyautogui.hotkey( 'ctrl' , 'a' )
        pyautogui.hotkey( 'ctrl' , 'c' )
        taxt_str=pyperclip.paste()
        #先全选,再复制并将复制的内容保存到taxt_str
    #处理邮件内容
        '''
        your_code     
        '''

这个方法的实现简单粗暴,最终我设置了从第几封邮件开始复制,复制多少封邮件。并且使用同样的方法可以直接将信息填到客服系统,这里就不多说了。

保存邮件信息的方式可以用列表类型保存,也可以保存在本地的txt文档。下面的代码将之前得到的发件人信息和邮件内容保存在列表in_list,in_list[i]对应一封邮件,可以用in_list[i][0]和in_list[i][1]去获取每封邮件的发件人信息和邮件内容。并且将这些信息保存在rb.txt本地文档中。

in_list=[]#声明一个列表
in_list.append([taxt_flag,taxt_str])#数据提取列表:发件人标签,备注全部信息
def dowload_print():
    for i in range(len(in_list)):#存储在txt文本
        with open('rb.txt', mode='a+', encoding='utf8') as f:
                data = f.read()
                f.write(in_list[i][0]+' '+in_list[i][1]+'\r\n')
        print(in_list[i])#窗口显示信息
    print("数量:",len(in_list))#显示邮件数量

后来采用selenium模拟登录163邮箱,并自动提取所有未读邮件的内容,详细过程在下一篇文章:采用selenium和beautifulsoup获取163邮箱邮件内容

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 好的,以下是一个使用Python编写的自动搜索并发送信息的脚本,它需要使用pyautoguipyperclip和time模块。注意,在运行脚本之前,你需要在浏览器中打开知乎,并登录你的账号。 ```python import pyautogui import pyperclip import time # 搜索关键词 search_term = "人工智能" # 打开知乎 pyautogui.press("win") pyautogui.typewrite("chrome") pyautogui.press("enter") time.sleep(2) # 进入知乎 pyperclip.copy("https://www.zhihu.com/") pyautogui.hotkey("ctrl", "v") pyautogui.press("enter") time.sleep(3) # 点击搜索框 pyautogui.click(957, 177) # 输入搜索关键词 pyperclip.copy(search_term) pyautogui.hotkey("ctrl", "v") pyautogui.press("enter") time.sleep(3) # 点击第一个搜索结果 pyautogui.click(291, 292) time.sleep(3) # 点击评论框 pyautogui.click(563, 726) # 输入评论 comment = "你好,我对人工智能非常感兴趣,能否分享一些学习资料呢?" pyperclip.copy(comment) pyautogui.hotkey("ctrl", "v") # 发送评论 pyautogui.press("enter") ``` 上述代码将打开Chrome浏览器并进入知乎,然后在搜索框中搜索给定的关键词,并点击第一个搜索结果。接下来,它会在评论框中输入指定的评论,并发送评论。你可以根据需要更改搜索关键词、评论内容以及鼠标单击坐标。 ### 回答2: 下面是一个简单的Python脚本,使用pyautoguipyperclip和time模块实现知乎自动搜索并发送信息的功能: ```python import pyautogui import pyperclip import time # 等待用户输入搜索关键词 keyword = input("请输入搜索关键词: ") # 打开浏览器并访问知乎网站 pyautogui.hotkey('ctrl', 'alt', 't') # 打开一个新的标签页 pyperclip.copy('https://www.zhihu.com/') # 复制知乎网址到剪贴板 pyautogui.hotkey('ctrl', 'v') # 粘贴剪贴板内容到浏览器地址栏 pyautogui.press('enter') # 按下回车键打开网址 time.sleep(5) # 等待页面加载完成 # 在搜索框中输入关键词并进行搜索 pyautogui.click(500, 100) # 点击搜索框 pyperclip.copy(keyword) # 复制关键词到剪贴板 pyautogui.hotkey('ctrl', 'v') # 粘贴剪贴板内容到搜索框 pyautogui.press('enter') # 按下回车键进行搜索 time.sleep(5) # 等待搜索结果加载完成 # 发送信息 pyautogui.click(500, 300) # 点击第一个搜索结果 time.sleep(5) # 等待页面加载完成 # 在回答框中输入信息并发送 pyautogui.click(500, 500) # 点击回答框 message = input("请输入要发送的信息: ") pyperclip.copy(message) # 复制信息到剪贴板 pyautogui.hotkey('ctrl', 'v') # 粘贴剪贴板内容到回答框 pyautogui.hotkey('ctrl', 'enter') # 按下Ctrl+Enter快捷键发送信息 # 等待发送完成 time.sleep(5) # 关闭浏览器标签页 pyautogui.hotkey('ctrl', 'w') ``` 请注意,这只是一个简单的示例脚本,仅供参考。在实际使用中,你可能需要根据自己的需求进行修改和优化。同时,使用自动化脚本需要谨慎,遵守相关网站的使用规则,并确保不侵犯他人的隐私和权益。 ### 回答3: 当然可以帮助你写一个使用python的脚本来自动搜索并发送信息到知乎。下面是一个示例脚本: ```python import pyautogui import pyperclip import time # 等待一些时间,以便你有足够的时间打开知乎页面 time.sleep(5) # 获取鼠标当前位置 original_position = pyautogui.position() # 移动鼠标至搜索框并点击 pyautogui.moveTo(100, 100) # 这里的坐标需要替换成你自己电脑上搜索框的位置 pyautogui.click() # 输入搜索关键词 search_keyword = "Python编程" pyperclip.copy(search_keyword) pyautogui.hotkey('ctrl', 'v') # 等待搜索结果加载完成 time.sleep(2) # 移动鼠标至第一个搜索结果并点击 pyautogui.moveTo(200, 200) # 这里的坐标需要替换成你自己电脑上第一个搜索结果的位置 pyautogui.click() # 等待文章加载完成 time.sleep(2) # 移动鼠标至评论框并点击 pyautogui.moveTo(300, 300) # 这里的坐标需要替换成你自己电脑上评论框的位置 pyautogui.click() # 输入评论内容 comment = "很棒的文章,谢谢分享!" pyperclip.copy(comment) pyautogui.hotkey('ctrl', 'v') # 提交评论 pyautogui.press('enter') # 将鼠标移动回原始位置 pyautogui.moveTo(original_position[0], original_position[1]) ``` 请注意,这只是一个基本的示例脚本,你需要根据你的实际情况修改坐标和其他参数以适应你自己的电脑和浏览器。此外,使用自动化脚本可能违反某些网站的使用规定,请确保你的行为符合知乎的使用政策。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值