Skip to content

Python + Selenium + Chrome 模拟登陆QQ邮箱,批量下载附件,本地重命名

Notifications You must be signed in to change notification settings

XHXIAIEIN/Auto-Download-QQMail-Attach

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 

Repository files navigation

批量下载QQ邮箱附件,下载完后修改文件重命名

因为工作原因,需要处理QQ邮箱来自各地网友的投稿附件。数量比较多(上千份),如果手动一个一个下载非常麻烦。。。

而且有些发来的附件命名也不规范,下载下来之后还需要手动去重命名,否则放一起就分不清谁是谁了,还可能会出现大量重复的命名文件。 这种非常机械化的重复操作,我想写个脚本批量下载QQ邮箱附件。

网上搜了下资料,基本都是通过POP3来下载,但这个邮箱并不是自己的,只是临时注册用来接收邮箱的小号,对方也不希望开通手机认证。

于是临时研究了一下 Python + selenium + Chrome 来模拟手动爬虫~

--

简要安装步骤

  1. 下载必要的软件:
    • Python,安装最新版。
    • Chromedriver,下载 win64 版本的 chromedriver,并解压到桌面。
    • 按下 win + R, 输入 cmd,在终端控制台安装运行库: pip install selenium
  2. 保存 Mail.py, 右键,保存到桌面。
  3. 使用 VSCode(建议)编辑文件,修改其中的自定义参数:邮箱文件夹ID
  4. 运行脚本。手动扫码登录,等待完成即可。

详细安装步骤

1. Python 3

https://www.python.org/ 打开页面,点击网页最醒目的黄色按钮。"Download Python 3.xxx" (xxx 为最新版本号) 下载最新版即可,跟着引导安装。

2. selenium

如果你已经安装好了 python 环境,按下 Win + R,输入 cmd,打开控制台。
接着输入下方的指令:

pip install selenium

若因网络代理问题无法下载,可尝试使用国内的镜像源。举例:

pip install selenium -i http:https://pypi.douban.com/simple --trusted-host pypi.douban.com

3. chromedriver

https://googlechromelabs.github.io/chrome-for-testing/#stable

这一步,可能相对比较麻烦,和看起来可怕,但请耐心操作。 打开页面,你会看一个巨大的,绿色的表格。 看中间的那几行,找到中间 chromedriver, 然后找到 win64 那行。

将 win64 旁边那格 URL 地址复制到浏览器地址栏,按下回车,即可下载。 可能有点慢,因为需要科学上网。 下载后,解压出来,放这个脚本文件相同的目录。

举例:下载的地址是这样的,只有链接中间的版本号数字不同
https://storage.googleapis.com/chrome-for-testing-public/126.0.6478.61/win64/chromedriver-win64.zip



在开始之前,你需要先做几件事。

1 邮箱文件夹

把你想要下载的邮件移动到文件夹里,方便整理区分。


2 找到对应的文件夹ID

在左侧的面板‘我的文件夹’中找到你刚刚创建的文件夹,
然后右键-新窗口打开,在浏览器地址栏的网址链接找到文件夹ID的参数: folderid

举例:这里的 folderid={ A },里面通常是一个数字,例如:123,129,200...

https://mail.qq.com/cgi-bin/frame_html?t=frame_html&sid={x}&url=/cgi-bin/mail_list?folderid={ A }%26page={x}

如何使用

已经安装了 Python,会发现开始菜单新增了一个 IDLE 编辑器,从菜单新建文件:File - New File (Ctrl + N)。
然后把 Mail.py 的代码复制粘贴到 IDLE 中,
将文件保存在任意位置(比如桌面),随便取个名比如 QQmail.py

阅读前半部分的参数区,根据你的需要对参数进行修改。具体的参数说明请继续看下方。
当你想运行脚本时,只需要在 IDLE 中运行代码即可:Run - Run Module (F5)


注:通过运行脚本启动的浏览器窗口,只能同时启动一个。若重复启动脚本将会打开空页面,需要关闭上一个窗口重新运行脚本。




修改自定义参数

  1. 文件夹ID(必填)
    就如前面的提示, 在文件夹右键,新窗口打开,找到网址链接的参数。
https://mail.qq.com/cgi-bin/frame_html?t=frame_html&sid={x}&url=/cgi-bin/mail_list?folderid={ A }%26page={x}
  1. 附件下载路径(必填)
    浏览器下载的文件会自动保存在这里。只需要填 ROOTPATH 在双引号里面的内容, 剩下两个会在这个目录创建文件夹。
ROOTPATH = r"D:\Downloads\2024"
DOWNLOAD_FOLDER = os.path.join(ROOTPATH,"download")     # 不需要修改。附件实际下载目录 即:"D:\\Downloads\\2024\\download"
USERDATA_FOLDER = os.path.join(ROOTPATH,"selenium")     # 不需要修改。浏览器的缓存数据 即:"D:\\Downloads\\2024\\selenium"
  1. 计划任务 (可选)
  • Title_Task,从第几封邮件开始,只读取多少封邮件,或者在第几封邮件结束。
  • Pages_Task,从第几页开始,翻多少页后结束,或者在第几页结束。

start 从第几个开始。默认从第1封邮件开始。
end 到第几个结束。举例:执行到第 20 封邮件时结束。(包含第20封邮件)
step 执行多少次后结束。举例:从第 1 封邮件开始执行,往后处理 10 封结束,也就是在第 10 封邮件时结束下载。

注:end 和 step 不同的地方是,end 代表着结束的终点,而 step 则是从开始后累计的数量。

Title_Task = {'start':1, 'step':0, 'end':0}
Pages_Task = {'start':1, 'step':0, 'end':0}
  1. 关键词过滤:邮件主题 (可选)
    TITLE_BACKLIST_KEYS,黑名单
    TITLE_WHITELIST_KEYS,白名单

需要注意的是,白名单关键词越多,匹配规则越严格。

TITLE_WHITELIST_KEYS = ['反馈','合作']      # 只处理标题同时包含这两个关键词的邮件
TITLE_BACKLIST_KEYS  = ['发信方已撤回邮件']  # 不处理
  1. 文件类型过滤:附件 (可选)
    ATTACH_BACKLIST_FILETYPE,黑名单
    ATTACH_WHITELIST_FILETYPE,白名单
attach_blacklist_filetype = [''] 
attach_whitelist_filetype = ['psd', 'ai']  # 不下载 psd 或 ai 类型的文件




小伙子,你干得不错!

如果这个脚本对你非常有帮助,节省了你的时间,提升了你的工作效率,让生活变得更美丽.... 可以请我喝杯咖啡喔!我会非常高兴的!!

xhxiaiein_sponsors

About

Python + Selenium + Chrome 模拟登陆QQ邮箱,批量下载附件,本地重命名

Topics

Resources

Stars

Watchers

Forks

Languages