【工作记录】爬虫
2016-08-09 12:16
162 查看
因为工作需要,有时候需要自己看邮箱里得内容。
代码如下:可以先拿去跑一跑,注意密码是ssl验证码
email:账号
password:授权码
pop3-server:(如)pop3.qq.com
用Python的poplib模块收取邮件分两步:第一步是用POP3协议把邮件获取到本地,第二步是用email模块把原始邮件解析为Message对象,然后,用适当的形式把邮件内容展示给用户即可。
————————-8/16日补充
java正则抓取网页上的邮箱
在新建一个调用的类pawenjian打印输出结果
结果如下:
代码如下:可以先拿去跑一跑,注意密码是ssl验证码
# -*- coding: utf-8 -*- import poplib import email from email.parser import Parser from email.header import decode_header from email.utils import parseaddr #解析邮件 def guess_charset(msg): charset = msg.get_charset() if charset is None: content_type = msg.get('Content-Type', '').lower() pos = content_type.find('charset=') if pos >= 0: charset = content_type[pos + 8:].strip() return charset def decode_str(s): value, charset = decode_header(s)[0] if charset: value = value.decode(charset) return value #定义输出的格式 def print_info(msg, indent=0): if indent == 0: for header in ['From', 'To', 'Subject']: value = msg.get(header, '') if value: if header=='Subject': value = decode_str(value) else: hdr, addr = parseaddr(value) name = decode_str(hdr) value = u'%s <%s>' % (name, addr) print('%s%s: %s' % (' ' * indent, header, value)) if (msg.is_multipart()): parts = msg.get_payload() for n, part in enumerate(parts): print('%spart %s' % (' ' * indent, n)) print('%s--------------------' % (' ' * indent)) print_info(part, indent + 1) else: content_type = msg.get_content_type() if content_type=='text/plain' or content_type=='text/html': content = msg.get_payload(decode=True) charset = guess_charset(msg) if charset: content = content.decode(charset) print('%sText: %s' % (' ' * indent, content + '...')) else: print('%sAttachment: %s' % (' ' * indent, content_type)) email = raw_input('Email: ') password = raw_input('Password: ') pop3_server = raw_input('POP3 server: ') server = poplib.POP3_SSL(pop3_server) server.set_debuglevel(1) print(server.getwelcome()) # 认证: server.user(email) server.pass_(password) print('Messages: %s. Size: %s' % server.stat()) #新建文件,保存邮件。但是这是没有解析的文件格式 myfile = file("testit.txt", 'w') resp, mails, octets = server.list() # 获取最新一封邮件, 注意索引号从1开始: for i in range(1,len(mails)): resp, lines, octets = server.retr(i) # 解析邮件: msg = Parser().parsestr('\r\n'.join(lines)) # 打印邮件内容到控制台: print_info(msg) #打印到文件夹,但是格式没有解析 print >> myfile,msg # 慎重:将直接从服务器删除邮件: # server.dele(len(mails)) # 关闭连接: myfile.close() #关闭文件 server.quit()
email:账号
password:授权码
pop3-server:(如)pop3.qq.com
用Python的poplib模块收取邮件分两步:第一步是用POP3协议把邮件获取到本地,第二步是用email模块把原始邮件解析为Message对象,然后,用适当的形式把邮件内容展示给用户即可。
————————-8/16日补充
java正则抓取网页上的邮箱
import java.io.BufferedReader; import java.io.File; import java.io.FileWriter; import java.io.InputStreamReader; import java.io.Writer; import java.net.URL; import java.net.URLConnection; import java.sql.Time; import java.util.Scanner; import java.util.regex.Matcher; import java.util.regex.Pattern; public class wangye { public static void main(String[] args) throws Exception {// 本程序内部异常过多为了简便,不一Try,直接抛给虚拟机 Long StartTime = System.currentTimeMillis(); System.out.println("--请输入正确的网址如http://www.baidu.com--"); Scanner input = new Scanner(System.in);// 实例化键盘输入类 String webaddress = input.next();// 创建输入对象 File file = new File("D:" + File.separator + "test.txt");// 实例化文件类对象 // 并指明输出地址和输出文件名 Writer outWriter = new FileWriter(file);// 实例化outWriter类 URL url = new URL(webaddress);// 实例化URL类。 URLConnection conn = url.openConnection();// 取得链接 BufferedReader buff = new BufferedReader(new InputStreamReader( conn.getInputStream()));// 取得网页数据 String line = null; int i=0; String regex = "\\w+@\\w+(\\.\\w+)+";// 声明正则,提取网页前提 Pattern p = Pattern.compile(regex);// 为patttern实例化 outWriter.write("该网页中所包含的的邮箱如下所示:\r\n"); while ((line = buff.readLine()) != null) { Matcher m = p.matcher(line);// 进行匹配 while (m.find()) { i++; outWriter.write(m.group() + ";\r\n");// 将匹配的字符输入到目标文件 } } Long StopTime = System.currentTimeMillis(); String UseTime=(StopTime-StartTime)+""; outWriter.write("--------------------------------------------------------\r\n"); outWriter.write("本次爬取页面地址:"+webaddress+"\r\n"); outWriter.write("爬取用时:"+UseTime+"毫秒\r\n"); outWriter.write("本次共得到邮箱:"+i+"条\r\n"); outWriter.write("****谢谢您的使用****\r\n"); outWriter.write("--------------------------------------------------------"); outWriter.close();// 关闭文件输出操作 System.out.println(" —————————————————————\t"); System.out.println("|页面爬取成功,请到D盘根目录下查看test文档|\t"); System.out.println("| |"); System.out.println("|如需重新爬取,请再次执行程序,谢谢您的使用|\t"); System.out.println(" —————————————————————\t"); } }
在新建一个调用的类pawenjian打印输出结果
import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.util.regex.Matcher; import java.util.regex.Pattern; public class pawenjian { public static void main(String[] args)throws Exception { BufferedReader buff=new BufferedReader(new FileReader("D:"+File.separator+"test.txt")); String line=null; String regex="\\w+@\\w+(\\.\\w+)+"; Pattern p=Pattern.compile(regex); while ((line=buff.readLine())!= null) { Matcher m=p.matcher(line); while (m.find()) { System.out.println(m.group()+";"); } } } }
结果如下:
该网页中所包含的的邮箱如下所示: -------------------------------------------------------- 本次爬取页面地址:http://tieba.baidu.com/p/3908710053 爬取用时:4024毫秒 本次共得到邮箱:0条 ****谢谢您的使用**** --------------------------------------------------------
相关文章推荐
- 2016-07-27 工作记录
- (5) flume ---- 工作记录2015年01月
- MyEclipse 如何清除记录的工作空间
- 工作记录四-etcd与flanneld
- 工作一年之后的记录与总结
- 自己工作过程中小知识点记录2(仅供参考)
- 【Python3.6爬虫学习记录】(二)使用BeautifulSoup爬取简单静态网页文章
- 【工作记录】筛选、查询本机磁盘
- 工作记录,request、分页,查询
- 鸟哥的linux私房菜服务器架设篇学习记录之进修专区与架设服务器的准备工作
- 『python工作』爬虫相关知识、概念
- 【工作记录】SpringMVC下js提交大数据量到controller失败解决
- Spring工作当中遇到的一些记录
- 20161114记录一件工作的事
- 工作记录--jni小问题
- php IIS日志分析搜索引擎爬虫记录程序第1/2页
- 接口测试-工作心得记录二
- 2013-07-23工作记录
- 搜索引擎—通用爬虫框架及工作流程
- rsync同步工作记录20130916