简单的Java网络爬虫(获取一个网页中的邮箱)
1 import java.io.BufferedReader; 2 import java.io.FileNotFoundException; 3 import java.io.FileReader; 4 import java.io.IOException; 5 import java.io.InputStreamReader; 6 import java.net.URL; 7 import java.util.ArrayList; 8 import java.util.List; 9 import java.util.regex.Matcher; 10 import java.util.regex.Pattern; 11 import java.io.*; 12 13 public class SpiderTest { 14 15 public static void main(String[] args) throws IOException { 16 // TODO 自动生成的方法存根 17 List<String> list =Search(); 18 for(String mail:list) 19 { 20 System.out.println(mail); 21 } 22 } 23 public static List<String> Search() throws IOException{ 24 @SuppressWarnings("resource") 25 //要抓取的网页 26 URL url =new URL("http://tieba.baidu.com/p/2314539885"); 27 //获取网页html文件中的信息 28 BufferedReader buf=new BufferedReader(new InputStreamReader(url.openStream())); 29 //创建一个list来保存数据 30 List<String> list =new ArrayList<String>(); 31 //使用正则表达式来匹配邮箱 32 String main_regex="\\w+@\\w+(\\.\\w+)+"; 33 Pattern p= Pattern.compile(main_regex); 34 String line=null; 35 while((line=buf.readLine())!=null) 36 { 37 Matcher m=p.matcher(line); 38 while(m.find()){ 39 list.add(m.group()); 40 } 41 } 42 return list; 43 } 44 }
一个简单的网络爬虫基本上有这几步:
- 获取网页中的数据
- 匹配符合正则表达式的数据,将数据加入List
- 将数据输出到文件中或打印输出
我写的这个爬虫是来抓取百度贴吧里留邮箱的一个页面中的所有的邮箱。(图片没打码不知道会不会有侵犯隐私的嫌疑)