黑马程序员技术交流社区

标题: 技术分超过25分的用户 [打印本页]

作者: 汪洋大海    时间: 2013-12-3 21:27
标题: 技术分超过25分的用户
  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. }
复制代码

作者: doitforyou    时间: 2013-12-4 01:10
很不错啊  顶一个   呵呵  学习下
作者: 天ya~_琼楼    时间: 2013-12-4 11:52
很厉害呀!
作者: ily521125    时间: 2013-12-4 13:03
学习了,非常赞!
作者: Jim-剣◆﹏    时间: 2013-12-5 13:45
好像很很屌的样子哦{:soso_e113:}
作者: zms2100    时间: 2013-12-5 13:58
受教了,是根据固定的用户UID号对应的页面来搜的是用户信息,不错,顶.............
自己还是要多学学搜索引擎的原理和相关知识,向爬虫前进,O(∩_∩)O~




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2