我们经常会有这样的困扰,当别人需要你帮忙手机某个网页上或某个文献里面的所有邮箱,这看起来是一个简单的活。
但如果网站或文献上的数据杂乱又繁多,收集起来极其有难度。这时,我们可以使用python来解决这一问题
话不多说,接下来我们就来实战一波
列出解题思路:
-
为邮件创建一个正则表达式
-
在剪切板文本中找到所有匹配
-
将符合的数据收集起来
-
将所有邮箱输出
第一步 写出一个匹配邮箱格式的正则表达式
import re # 引入正则表达式模块
emailRegex = re.compile(r'''(
[a-zA-Z0-9._%+-]+ # 匹配@前面的部分 字母数字下划线小数点等符号
@ # @ 必须要有@符号
[a-zA-Z0-9.-]+ # 任意数字字母小数点还有-
(\.[a-zA-Z]{2,4}) # 必须含有一个. .后面必须带2-4个字母
)''', re.VERBOSE) # re.VERBOSE 表示允许正则后面添加注释
写好邮箱格式我们也可以去自己验证一下,贴出测试的地址:https://c.runoob.com/front-end/854
第二步 在剪切板文本中找到所有匹配
要满足第二步,需要引入一个剪切板的模块
import pyperclip
text = str(pyperclip.paste())
第三步 将所有符合的数据收集起来
matches = [] # 使用一个数组收集数据
for groups in emailRegex.findall(text):
matches.append(groups[0])
第四步 将所有邮箱输出
if len(matches) > 0:
pyperclip.copy('\n'.join(matches))
print('列出所有邮箱:\n')
print('\n'.join(matches))
else:
print('没有找到所需邮箱!!!')
我们随便找一个网址:http://blog.sina.com.cn/s/blog_147f99d5d0102vmyv.html
进入网站后,ctrl+A全选,复制,然后运行程序
运行结果如下:
这样我们的任务就大功告成了
其实这个程序还有一些优化的地方,可以把邮件直接写入到文件中,还有就是可以直接从网页上进行爬取,不过我们这种方法也不限于网页,等我学习到后面再给大家进行分享吧,哈哈
喜欢本文的话,可以关注以下公众号,每天定时更新一篇python学习日记,让我们一起成长!