A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘芮铭 中级黑马   /  2012-8-28 22:55  /  1246 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

用正则表达式编写一个小型的网页爬虫基本上还是可以理解的!
但是发现一个小小的疑问。如下:
import java.io.*;
import java.util.regex.*;
import java.net.*;
import java.util.*;
class RegexTest2
{
public static void main(String[] args) throws Exception
{
  getMails();
}


public static void getMails_1()throws Exception
{
  URL url = new URL("
http://192.168.1.254:8080/myweb/mail.html");
  URLConnection conn = url.openConnection();

  BufferedReader bufIn = new BufferedReader(new InputStreamReader(conn.getInputStream()));
  
  String line = null;

  String mailreg = "\\w+@\\w+(\\.\\w+)+";
  Pattern p = Pattern.compile(mailreg);


  while((line=bufIn.readLine())!=null)  //每次只读一行,感觉就没办法解决2行各出现一部分的邮件地址问题!
  {
   Matcher m = p.matcher(line);
   while(m.find())
   {
    System.out.println(m.group());
   }
  }
}

爬一个网页是没问题的,但是一切编程都需要结合现实的实例来说,在毕老的视频里面是自己编写的一个网页,
每行都有一个到多个完整的邮件地址,如下:

skdajfl>
abc1@sina.com <ksadjflkdjfsa;lkdfjksa;ljfs;alfjsa;lkjfsa;lkfjska;ljfsafsd
skdajflksadjflkdjfsa;lkdfjksa;ljfs;alfjsa;lkjfsa;lkfjska;ljfsafsd
skdajfl>
abc2@sina.com<sadjflkdjfsa;lkdfjks> abc3@sina.com<a;ljfs;alfjsa;lkjfsa;

但结合显示来讲,不可能每行都是完整的邮件的地址,完全可以出现以下状况:2行各出现邮件地址的一部分,请问怎么能爬出这种地址?

skdajflksadjflk>
abc0@sina.com<djfsa;lkdfjksa;ljfs;alfjsa;lkjfsa;lkfjska;ljfsafsd;xyz
@123.com skdajflksadjflkdjfsa;lkdfjksa;ljfs;alfjsa;lkjfsa;abcd@
.com
skdajflksadjflkdjfsa;lkdfjksa;ljfs;alfjsa;lkjfsa;lkfjska;ljfsafsd

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马