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)

执行结果如下:

数据提取中...
['                      百度无线', 'mbaidu@baidu.com', '                      市场合作', 'upmco@baidu.com', '                      校园合作', 'campusmaster@baidu.com', '                      战略合作', 'zhanzhangpingtai@baidu.com']
数据已写入...
文档已保存!
提取完毕!

文本打开如下:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值