Python练习篇25-re模块利用正则匹配提取网页邮箱并保存

本文介绍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]']
数据已写入...
文档已保存!
提取完毕!

文本打开如下:
Python练习篇25-re模块利用正则匹配提取网页邮箱并保存_第1张图片

你可能感兴趣的:(Python)