本文介绍re模块利用正则匹配提取网页邮箱并保存
提取网页邮箱我们需要用到requests模块、re模块和xlwt模块(下载方法:打开cmd,输入pip install 包名),负责去匹配邮箱数据。
本篇我们演示下提取百度邮箱(http://home.baidu.com/contact.html)
图例如下:
只提取红框里面邮箱数据
代码如下
#提取网页邮箱并保存
import requests
import xlwt
import re
ef get_email(sheet, url):
#设置sheet名
work = xlwt.Workbook()
ws = work.add_sheet(sheet)
f = requests.get(url) #get方法访问网页
doc = f.text #得到页面源代码,注意这里不能用content,会匹配不出来
print(‘数据提取中...’)
#使用正则匹配文档中存在的email地址
emiless = re.findall(r'.+:+[\w]+@[\w\.-]+', doc) #匹配邮箱,里面‘.’是匹配包括空值字符
#emiles = re.findall(r'.+:+[0-9a-zA-Z._]+@[0-9a-zA-Z._]+\.[0-9a-zA-Z._]+', doc) #也是匹配邮箱
emiles = set(emiless) #去重
#分割邮箱名和邮箱
list = []
for emile in emiles:
for i in emile.split(':'):
list.append(i)
print(list)
#写入Excel文档
n = 0
for i in range(len(emiles)):
ws.write(i, 0, (list[n + 0])[22:])
ws.write(i, 1, list[n + 1])
n += 2
print('数据已写入...')
#保存
try:
work.save('email.xls')
print('文档已保存!')
except Exception as e:
print('请先关闭文档!')
time.sleep(2)
print('提取完毕!')
#执行
sheet = 'eamil'
url = 'http://home.baidu.com/contact.html'
get_email(sheet, url)
执行结果如下:
数据提取中...
[' 百度无线', '[email protected]', ' 市场合作', '[email protected]', ' 校园合作', '[email protected]', ' 战略合作', '[email protected]']
数据已写入...
文档已保存!
提取完毕!