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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 汪洋大海 中级黑马   /  2013-12-3 21:27  /  1534 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. import java.io.BufferedReader;
  2. import java.io.BufferedWriter;
  3. import java.io.FileWriter;
  4. import java.io.InputStreamReader;
  5. import java.net.URL;
  6. import java.net.URLConnection;
  7. import java.util.regex.Matcher;
  8. import java.util.regex.Pattern;

  9. /**
  10. * 爬一下黑马的用户。
  11. * 技术分超过25的
  12. * 存入文件中。
  13. * 格式:姓名xxx UIDxxx 技术分xxx
  14. */


  15. class Url
  16. {
  17.         static String name = null;
  18.         public static void main(String[] args) throws Exception
  19.         {
  20.                 BufferedWriter bw = new BufferedWriter(new FileWriter("f:\\io\\person.txt"));
  21.                 for(int x=98200;x<100000;x++)
  22.                 {
  23.                         //创建连接。
  24.                          URL url = new URL("http://bbs.itheima.com/space-uid-"+x+".html");
  25.                          URLConnection ucc = url.openConnection();
  26.                          BufferedReader br = new BufferedReader(new InputStreamReader(ucc.getInputStream(),"utf-8"));
  27.                          
  28.                         //爬这一断代码"数字 </span>技术分"
  29.                          //还爬一下这断代码"name">用户名<"
  30.                          String line = null;
  31.                          while ((line=br.readLine())!=null)
  32.                          {                               
  33.                                  String regex = "\\d+ </span>技术分";
  34.                                  Pattern p = Pattern.compile(regex);
  35.                                  Matcher m = p.matcher(line);
  36.                                  
  37.                                  String regex2 = "name\">.+<";
  38.                                  Pattern p2 = Pattern.compile(regex2);
  39.                                  Matcher m2 = p2.matcher(line);
  40.                                  
  41.                                  
  42.                                  while (m2.find())
  43.                                  {                                       
  44.                                          name = m2.group();
  45.                                          name = name.replace( "name\">","");
  46.                                          name = name.replace("<", "");
  47.                                  }
  48.                                  while (m.find())
  49.                                  {
  50.                                          //把数据存入文件中
  51.                                         String s= m.group();
  52.                                         String[] arr = s.split(" </span>");
  53.                                         if(Integer.parseInt(arr[0])>=25)
  54.                                         {
  55.                                                 bw.write("姓名:"+name+"\t\tUID:"+x+"\t"+arr[1]+arr[0]);
  56.                                                 bw.newLine();
  57.                                                 bw.flush();
  58.                                         }
  59.                                  }                                 
  60.                                  System.out.println(line);//测试时用的。看有没有连接到数据。
  61.                          }
  62.                 }
  63.                 bw.close();
  64.                  
  65.         }

  66. }
复制代码

评分

参与人数 2技术分 +2 收起 理由
乔兵 + 1 赞一个!
枫儿 + 1 不错的代码!+1

查看全部评分

5 个回复

倒序浏览
很不错啊  顶一个   呵呵  学习下
回复 使用道具 举报
很厉害呀!
回复 使用道具 举报
学习了,非常赞!
回复 使用道具 举报
好像很很屌的样子哦{:soso_e113:}
回复 使用道具 举报
受教了,是根据固定的用户UID号对应的页面来搜的是用户信息,不错,顶.............
自己还是要多学学搜索引擎的原理和相关知识,向爬虫前进,O(∩_∩)O~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马