- UID
- 2
- 精华
- 积分
- 7736
- 威望
- 点
- 宅币
- 个
- 贡献
- 次
- 宅之契约
- 份
- 最后登录
- 1970-1-1
- 在线时间
- 小时
|
微软msdn一般都会在vs安装包里提供,但是有时候你只需要庞大信息的一个小分支,特定信息只有微软官网才有,vs2010强大的帮助文档也未提供,我遇到这个问题的时候就想用java+jsoup做个下载器解决这个问题,按目录递归下载各个网页拼成整个的html,最后转换成doc。效果还是不错的,我另外生成目录并加到html最前端。我之所以要写这个代码,是因为前两天看到了windbg想看看用法无奈他的帮助信息指向到了微软msdn里,而vs没有这部分内容,仅在在线msdn才有。java代码如下:
- import java.io.FileOutputStream;
- import org.jsoup.Jsoup;
- import org.jsoup.nodes.Document;
- import org.jsoup.nodes.Element;
- import org.jsoup.select.Elements;
- public class MSDNDownloader
- {
- public static String htmldirtree="";//生成目录树
- public static String htmlbody="";//拼接章节
- public static String urlbase="http://msdn.microsoft.com";//根路径地址
- public static String root="/en-us/library/ff551063(v=vs.85).aspx";//windows debugging在msdn的根位置
- public static int maxcount=10000;
- public static void resolve(String cururl,int curdepth)
- {
- boolean islastlayer=false;
- try
- {
- if(maxcount-- <= 0)
- return;
- System.out.println(maxcount);
- Document doc=Jsoup.connect(cururl).timeout(0).get();
- if(!doc.select("div.toclevel2.current a").isEmpty())
- islastlayer=true;
- //先添加当前层目录
- Element curtitle;
- if(islastlayer)
- curtitle=doc.select("div.toclevel2.current a").get(0);
- else
- curtitle=doc.select("div.toclevel1.current a").get(0);
- htmldirtree+= "<H"+curdepth+" style="margin-left:"+20*curdepth+"px">";
- htmldirtree+= curtitle.text()+"</H"+curdepth+">\n";
- System.out.println(curtitle.text());
- //再添加当前层内容
- htmlbody += doc.select(".topic").toString()+"\n";
-
- if(!islastlayer)
- {
- //处理下一层
- Elements subtitle=doc.select("div.toclevel2 a");
- if(!doc.select("div.toclevel2.current a").isEmpty())
- {
- subtitle.remove(0);
- }
- for(Element everytitle:subtitle)
- {
- resolve(everytitle.attr("abs:href"),curdepth+1);
- }
- }
- }
- catch(Exception exc)
- {
- System.out.println("错误!");
- //System.exit(0);
- }
- }
- public static void main(String[] args)
- {
- try
- {
- resolve(urlbase+root,1);
-
- FileOutputStream fs=new FileOutputStream("result.htm");
- String html="<!DOCTYPE html>\n<html>\n<head><title>result</title></head>\n<body>\n<font color=0x00ffff>\n";
- html += htmldirtree+"\n</font>\n"+htmlbody+"\n</body>\n</html>";
- fs.write(html.getBytes());
- fs.close();
- }
- catch(Exception exc)
- {
- System.out.println("错误!");
- System.exit(0);
- }
- }
- }
复制代码
以上代码比较厉害,不过由于手机网络限制始终没有直接运行,我找仅仅了一个子目录运行,就生成了5M的html(见过这么大的没),
以下是部分目录:
Debugger Reference
Command-Line Options
CDB Command-Line Options
KD Command-Line Options
WinDbg Command-Line Options
DbgSrv Command-Line Options
KdSrv Command-Line Options
DbEngPrx Command-Line Options
KDbgCtrl Command-Line Options
DbgRpc Command-Line Options
SymStore Command-Line Options
Environment Variables
General Environment Variables
Kernel-Mode Environment Variables
Debugger Commands
|
|