找回密码
 立即注册→加入我们

QQ登录

只需一步,快速开始

搜索
热搜: 下载 VB C 实现 编写
查看: 2509|回复: 2

boomerang bochs cheatengine爬虫

[复制链接]
发表于 2014-3-24 15:36:49 | 显示全部楼层 |阅读模式

欢迎访问技术宅的结界,请注册或者登录吧。

您需要 登录 才可以下载或查看,没有账号?立即注册→加入我们

×
这次我又写了一个爬虫。。。。。。。。。。

  1. import java.io.File;
  2. import java.io.FileOutputStream;
  3. import java.io.IOException;
  4. import java.io.InputStream;
  5. import java.net.URL;
  6. import java.net.URLConnection;

  7. import org.jsoup.Jsoup;
  8. import org.jsoup.nodes.Document;
  9. import org.jsoup.nodes.Element;
  10. import org.jsoup.select.Elements;

  11. public class boomerang
  12. {
  13.         public static String url="http://svn.code.sf.net/p/boomerang/code/";
  14.         public static String path="C:/boomerang/";
  15.         public static int filethreadnum=0;
  16.         
  17.         public static boolean setinit=false;//是否强制初始化
  18.         public static String[] initstring={};//初始化目录位要开始更新的目录,按深度顺序
  19.         public static int curdepth=0;//当前初始化深度

  20.         public static class FileThread extends Thread
  21.         {
  22.                 String curnode;
  23.                
  24.                 FileThread(String curnode)
  25.                 {
  26.                         this.curnode=curnode;
  27.                 }
  28.                
  29.                 public void run()
  30.                 {
  31.                         try
  32.                         {
  33.                                 while(filethreadnum>10)
  34.                                 {
  35.                                         sleep(1000);
  36.                                 }
  37.                                 filethreadnum++;
  38.                                 
  39.                             int byteread=0;
  40.                             int bytesum=0;
  41.                             URL weburl=new URL(url+curnode);
  42.                             URLConnection con=weburl.openConnection();
  43.                             InputStream instream=con.getInputStream();
  44.                             FileOutputStream fs=new FileOutputStream((path+curnode).replace("%20"," "));
  45.                             byte[] buffer=new byte[65536];
  46.                             while((byteread=instream.read(buffer)) != -1)
  47.                             {
  48.                                      bytesum+=byteread;
  49.                                      fs.write(buffer,0,byteread);
  50.                                      System.out.println("\t\t当前下载文件:"+curnode+"\t当前大小:"+bytesum);
  51.                             }
  52.                             fs.close();
  53.                             instream.close();

  54.                                 filethreadnum--;
  55.                         }
  56.                         catch(Exception e)
  57.                         {
  58.                                 System.out.println("error"+e.getMessage());
  59. //                                new File(path+filepath).deleteOnExit();;
  60.                                 filethreadnum--;
  61.                         }
  62.                 }
  63.         }
  64.         
  65.         public static String escape(String src)
  66.         {
  67.                 StringBuffer sbuf=new StringBuffer();
  68.                 int len=src.length();
  69.                 for(int i=0;i<len;i++)
  70.                 {
  71.                         int ch=src.charAt(i);
  72.                         if(ch == '\\' || ch == '*' || ch == '?' || ch == '"' || ch == '<' || ch == '>' || ch == '|')
  73.                                 sbuf.append('x');//忽略不能做文件名的字符
  74.                         else
  75.                                 sbuf.append(ch);
  76.                 }
  77.         
  78.                 return sbuf.toString();
  79.         }
  80.         
  81.         public static String createFolder(String folderPath)
  82.         {
  83.                 String txt = folderPath;
  84.                 txt.replace('\\','/');
  85.                 if(txt.charAt(txt.length()-1) != '/')
  86.                         txt+='/';
  87.                 try
  88.                 {
  89.                         File myFilePath = new File(txt);
  90.                         txt = folderPath;
  91.                         if (!myFilePath.exists())
  92.                         {
  93.                                 if(!myFilePath.mkdir())
  94.                                 {
  95.                                         String newpath=folderPath.substring(0,folderPath.length()-1);
  96.                                         newpath=newpath.substring(0,newpath.lastIndexOf('/'));
  97.                                         createFolder(newpath);
  98.                                         myFilePath.mkdir();
  99.                                 }
  100.                         }
  101.                 }
  102.                 catch (Exception e)
  103.                 {
  104.                         System.out.println("错误!"+e.getMessage());
  105.                 }
  106.                 return txt;
  107.         }
  108.         
  109.         public static void myresolve(Element e,String before) throws IOException
  110.         {
  111.                 try
  112.                 {
  113.                         String curnode=e.attr("href");
  114.                         System.out.println(before+curnode);
  115.                         if(setinit)
  116.                         {
  117.                                 if(!curnode.equals(initstring[curdepth]))
  118.                                         return;
  119.                                 else
  120.                                         curdepth++;
  121.                                 if(curdepth >= initstring.length)
  122.                                         setinit=false;
  123.                         }
  124.          
  125.                         if(!curnode.contains(".."))
  126.                         {//非父目录
  127.                                 if(curnode.charAt(curnode.length()-1) == '/')
  128.                                 {//目录
  129.                                         createFolder((path+before+curnode).replace("%20"," "));
  130.                                         Document doc=Jsoup.connect(url+before+curnode).timeout(0).get();
  131.                                         System.out.println("当前目录:"+url+curnode);
  132.                                         Elements items = doc.select("li a");
  133.                                         for(Element ele:items)
  134.                                         {
  135.                                                 myresolve(ele,before+curnode);
  136.                                         }
  137.                                 }
  138.                                 else
  139.                                 {//文件
  140.                                         String filepath=e.text();
  141.                                         File curfile=new File((path+before+filepath).replace("%20"," "));
  142.                                         if(curfile.exists())
  143.                                                 return;
  144.                                         while(filethreadnum>10)
  145.                                         {
  146.                                                 Thread.sleep(1000);
  147.                                         }
  148.                                         (new FileThread(before+filepath)).start();
  149.                                 }
  150.                         }
  151.                 }
  152.                 catch(Exception exc)
  153.                 {
  154.                         System.out.println("错误!"+exc.getMessage());
  155.                 }
  156.         }
  157.         
  158.         public static void main(String[] args) throws IOException
  159.         {
  160.                 try
  161.                 {
  162.                         Document doc = Jsoup.connect(url+"/").timeout(0).get();
  163.                         Elements items=doc.select("li a");
  164.                         createFolder(path);
  165.                         for(Element e:items)
  166.                         {
  167.                                 myresolve(e,"");
  168.                         }
  169.                 }
  170.                 catch(Exception exc)
  171.                 {
  172.                         System.out.println("错误!"+exc.getMessage());
  173.                 }
  174.         }
  175. }

复制代码

稍作修改,bochs的源码也可以下载了
        public static String url="http://svn.code.sf.net/p/bochs/code/";
        public static String path="C:/bochs/";
再稍作修改,cheatengine的源码可以下载了
        public static String url="http://cheat-engine.googlecode.com/svn/";        public static String path="C:/cheatengine/";



回复

使用道具 举报

发表于 2014-3-26 16:33:27 | 显示全部楼层
谢谢了。沙发
回复 赞! 靠!

使用道具 举报

发表于 2014-3-27 20:21:38 | 显示全部楼层
顶一个。。。。。。。。。。。。。
回复

使用道具 举报

本版积分规则

QQ|Archiver|小黑屋|技术宅的结界 ( 滇ICP备16008837号 )|网站地图

GMT+8, 2024-12-23 06:20 , Processed in 0.030191 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表