邮箱地址提取工具是用来处理文档、网页、数据库这些地方的文本数据的, 专门用来批量识别和提取里面的邮箱地址。它的核心原理是建立在邮箱地址的标准格式规则基础上面的, 比如说那个user@domain.com的样子。

通过用正则表达式或者是内置的解析引擎这两个办法, 来实现非常精准的匹配操作。关于这一点, 目前主流的有五种提取方法, 并且下面会给出对应的工具推荐。

在线批量提取工具

gname.xin 这个网站, 它有一个功能是可以批量提取免费邮箱地址的, 你支持多种文本格式, 比如多行文本、CSV 文件, 还有 TXT 文档都可以,这些粘贴进网站里, 或者直接上传也行的, 然后一点一下就能把这些内容给提取出来了, 它每次处理的记录数是有限制的, 最多是5000条, 处理完了之后, 那个结果你可以复制到剪贴板里变成纯文本, 或者导出成 CSV 格式的也是可以的, 这个工具用起来特别方便, 不需要你去注册什么账号的, 只要打开这个网页就可以直接用了, 它是挺适合处理那些规模在中小范围内的数据的, 数据量大概是在100到5000条之间这个范围的。

正则表达式手动提取

适合给懂技术的人用, 在那些带有正则搜索功能的软件里, 比方说Notepad++、VS Code以及Excel, 去使用下面这一串表达式:

[a-zA-Z0-9._%+\-]+@[a-zA-Z0-9.\-]+\.[a-zA-Z]{2,}

具体的操作办法是这样的, 先打开文本文件, 接着启用正则匹配模式功能, 然后把刚才那个表达式粘贴进去, 再执行搜索, 最后导出所有匹配到的结果这个过程完全不需要另外安装什么别的软件工具但是要是处理的文本数据超过一万条的话速度就会显得比较低效。

Python 脚本批量处理

适合开发者使用, 或者需要在嵌入自动化工作流的场景下进行处理。核心代码:

import re
text = open("data.txt", encoding="utf-8").read()
emails = re.findall(r'[a-zA-Z0-9._%+\-]+@[a-zA-Z0-9.\-]+\.[a-zA-Z]{2,}', text)
with open("emails.csv", "w", encoding="utf-8") as f:
    for e in dict.fromkeys(emails):
        f.write(e + "\n")

这个方案能够处理数量达到百万级以上的那一些文本内容, 同时它还支持用户自己去定义一些过滤的规则, 比如在那些图片链接里面的伪邮箱就可以被排除掉。

办公软件内置功能

邮箱地址提取工具推荐:5种方法快速批量提取邮箱(图1)

在Excel里面, 大家可以利用那个查找与替换的功能去找到包含有@这个符号的单元格, 然后再加上数据分列这个操作来进行初步的筛选工作;另外呢, WPS表格也提供了一个用来提取文本的插件。这种方法特别适合那种数据量比较小的情况, 也就是几千条以内的数据, 而且数据的格式还得是比较规整的场景。

网页爬虫批量采集

当你需要在从公共网页上大量抓取邮箱地址的时候, 你可以选择使用与这个框架在一起搭配<正则表达式>模块来操作, 或者也可以去利用那些已经准备好的采集工具来做这件事。但是必须要注意的是, 你应当去遵守那个目标网站里面所规定的协议的内容, 同时也要符合《数据安全法》里面的那些相关条款的规定。

合规要点

1. 我们要去收集那个人的邮箱地址, 或者是去使用这个邮箱地址的时候, 是必须得要取得到这个个人本人的同意才可以的, 不然的话就得要有着其他的法律所规定的那种事由才行。

2. 用于营销外发须遵守《反电信网络法》及垃圾邮件相关法规;

3. 在对提取出的结果内容进行处理的时候, 对于所牵涉到的那些属于姓名类别的字段, 还有手机号码这种类型的数据字段, 都应该秉持着那个最小需求的、最少的要求来进行脱敏的处理操作。

4. 数据留存期限, 不能超过为了达成那个目的所必需的最短时长, 到时间以后, 就应该把它删掉, 或者进行匿名化处理。

常见问题

如果在提取结果中看到有重复的情况, 或者是出现了误识别的问题的话, 我们就建议说在正则匹配之后再加一步去重, 这个去重呢是按照完整的邮箱字符串来做的, 同时还得过滤掉那些以点png或者点jpg等图片后缀结尾的所谓伪邮箱。

关于gname.xin这个在线工具, 它里面已经内置了去重功能和对图片后缀进行过滤的功能所以最终拿到的提取结果是默认就完成去重的可以直接拿过来用。