`
shuaigg.babysky
  • 浏览: 565974 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

nodejs 扒页面 api-docs

 
阅读更多
var continuation = require('../continuation');
var http = require("http");
var fs = require('fs');
var url = require('url');
var ps = require("path");
//var request = require("request");

function main_entry() {
  var $baseurl = "http://directwebremoting.org/dwr/javadoc/";
  var $basepath = "E:\\dwrdoc\\";
  var $lefttopurl = "http://directwebremoting.org/dwr/javadoc/overview-frame.html";
  var getLocal = function(str) {
  	  str = str.replace($baseurl , "");
  	  str = str.replace(/^\// , "");
  	  if(/^http\:/.test(str)) {
  	  	return $basepath;
  	  }
  	  var local = ps.resolve($basepath , str);
  	  var dirname = ps.dirname(local);
  	  console.log(local + "," + dirname);
  	  mkdir(dirname);
  	  return local;
  };
  var mkdir = function(str) {
  	 var arr = str.split(/\\/g);
  	 var step = "";
  	 while(arr.length) {
  	 	var shift = arr.shift();
  	 	step += shift + "\\";
  	 	if(!fs.existsSync(step)) {
  	 		fs.mkdirSync(step , 0777);
  	 	}
  	 }
  };
  var getLinks = function(str , $base) {
  	$base = $base || $baseurl;
  	var reg = /<a.*?href="(.+?)".*?>.*?<\/a>/gi , result;
  	var list = [];
  	while((result = reg.exec(str)) != null) {
  		var location = url.resolve($base , result[1]).replace(/\?.*$/ , "");
  		if(!/#.*$/.test(location)) {
  			list.push(location);
  		}
  	}
  	
  	var reg = /<frame.*?src="(.+?)".*?>/gi;
  	while((result = reg.exec(str)) != null) {
  		var location = url.resolve($base , result[1]).replace(/\?.*$/ , "");
  		if(!/^#/.test(location)) {
  			list.push(location);
  		}
  	}
  	/*
  	var reg = /<img.*?src="(.+?)".*?>/gi;
  	while((result = reg.exec(str)) != null) {
  		var location = url.resolve($base , result[1]).replace(/\?.*$/ , "");
  		var local = getLocal(location);
  		console.log(location + "............");
  		console.log(local + "...............");
  		http.request(location).pipe(fs.createWriteStream(local));
  	}
  	*/
  	return list;
  };
  
  var $httpget = function(url , next) {
  	//console.log('正在处理 ' + url);
  	if(url.indexOf("mailto:") == 0) {
  		return "";
  	}
  	var result = [];
  	http.get(url , cont(res));
  	res.on("data" , function(data) {
  		result.push(data.toString());
  	});
  	res.on("end" , cont(callback));
  	next(null , result.join(''));
  };
  
  $indexpath = $basepath + "index.html";
  
  if(fs.existsSync($indexpath)) {
  	  return;
  }
  
  $httpget($baseurl , obtain(result));
  
  fs.writeFileSync($indexpath , result , "utf-8");
  
  var listO = getLinks(result);
  
  listO.forEach(function(item) {
  	var localPathO = getLocal(item);
  	if(fs.existsSync(localPathO)) {
		return;
	}
	$httpget(item , obtain(resultO));
  	fs.writeFileSync(localPathO , resultO , "utf-8");
  });
  
  
  $httpget($lefttopurl , obtain(result1));
  
  var list1 = getLinks(result1);
  
  list1.forEach(function(item) {
  		var localPath = getLocal(item);
  		
  		if(fs.existsSync(localPath)) {
  			return;
  		}
  		
  		$httpget(item , obtain(result1));
  		fs.writeFileSync(localPath , result1 , "utf-8");
  		
  		var $basedir = url.resolve(item , "./");
  		
  		var list2 = getLinks(result1 , $basedir);
  		
  		list2.forEach(function(item1) {
  			
  			var localPath1 = getLocal(item1);
  			
  			if(fs.existsSync(localPath1)) {
	  			return;
	  		}
  			
  			$httpget(item1 , obtain(result2));
  			
  			
  			
  			fs.writeFileSync(localPath1 , result2 , 'utf-8');
  			
  			return;
  			/*
  			var list3 = getLinks(result2 , $basedir);
  			
  			list3.forEach(function(item2) {
  				var localPath2 = getLocal(item2);
  				if(fs.existsSync(localPath2)) {
		  			return;
		  		}
		  		$httpget(item2 , obtain(result3));
	  			fs.writeFileSync(localPath2 , result3 , 'utf-8');
  			});
  			*/
  			
  			
  		});
  		
  		
  });
};

var code = main_entry.toString();
var compiledCode = continuation.compile(code);
eval(compiledCode);
main_entry();
 
分享到:
评论

相关推荐

    Angular2-NodeJs:Angular2-Node.Js

    【Angular2-NodeJs: Angular2与Node.js的结合应用】 Angular2,是Google推出的下一代前端框架,它在AngularJS的基础上进行了全面的升级和优化,提供了更好的性能、更清晰的结构以及更强大的功能。而Node.js则是一个...

    nodejs-express-app:开始在IBM Cloud上构建您的下一个Node.js Express应用程序

    运行在: /swagger/api-docs 健康终点: /health 微服务已准备就绪,可以在Docker容器中本地运行,也可以与本地操作系统上托管的Node.js运行时一起运行。 使用( ibmcloud dev )进行本地开发。 当您准备部署到...

    jedrula-app-docs:我的blogportfolio应用程序上的文档。 应用程序微服务列表

    【压缩包子文件的文件名称列表】:“jedrula-app-docs-master”表明这是项目的主分支或源代码库的压缩包,可能包含以下部分: - **README**:介绍项目的基本信息、安装步骤和使用指南。 - **源代码文件夹**:每个...

    jenkins-nodejs-app:用于Jenkins onn K8S Workshop的NodeJS应用

    运行在: /swagger/api-docs 健康终点: /health 微服务已准备就绪,可以在Docker容器中本地运行,也可以与本地操作系统上托管的Node.js运行时一起运行。 使用( ibmcloud dev )进行本地开发。 当您准备部署到...

    weshop-微信小程序应用商城

    6. 安装weshop-admin-ui模块,运行mvn install和mvn build命令,运行命令前需要安装nodeJs 7. 运行weshop-eureka-server、weshop-config-server、weshop-api-gateway这几个基础服务 8. 运行weshop-user、weshop-...

    node-guita-spider:API grabbing of the guitar spectrum web site 聚合吉他谱API

    : Nodejs页面解析模块 : 快速生成文档工具 项目目录说明 . |-- assets // 静态资源目录 |-- docs // docsify文档目录 | |-- index.html // docsify入口 | |-- README.md // 文档markdown |-- ser

    nodejs中英文文档合集及chm打包

    本资源“nodejs中英文文档合集及chm打包”提供了全面的Node.js学习资料,包括中文和英文版本,方便不同语言背景的开发者查阅。 首先,`docs.rar`可能是一个包含多种格式的文档集合,如HTML、PDF或者Markdown等,...

    test-data-store:NodeJS API,用于存储和检索测试数据

    测试数据存储 适用于需要使用测试数据的客户的API接口。 设置 ... 通过“使用API​​服务器”下面的部分访问API和Swagger页面,或使用Postman集合。 停止测试数据存储 使用api完成后,通过运行以下

    nodejs_exp_starter:来自ibm repo的启动项目

    运行在: /swagger/api-docs 健康端点: /health 该微服务已准备就绪,可以在Docker容器中本地运行,也可以与本地操作系统上托管的Node.js运行时一起运行。 使用( ibmcloud dev )进行本地开发。 当您准备部署...

    swagger在线文档转成word文档

    这个页面展示了所有API的详细信息,包括路径、方法、参数等。 要将Swagger的在线文档转换为Word文档,我们可以借助第三方工具或库,如`swagger2doc`。这是一个Python脚本,它可以解析Swagger JSON或YAML格式的文档...

    lodestone-nodejs:用于nodejs的字符跟踪和解析器库

    用于FFXIV的NodeJS Lodestone解析器 解析“角色。 API 帮忙 帮助构建此API非常简单,您只需要基本的Javascript / JQuery知识就可以进行解析,并且对MySQL的一些了解将对持久性领域有所帮助(不是必需的) 如果您有...

    【浏览器插件】OctoLinker.zip

    OctoLinker为您链接至API文档,如nodejs.org/en/docs、docs.python.org、docs.oracle.com或rubygems.org。代码审查Pull Request时,OctoLinker将依赖和文件链接整合,让您专注于代码审查。项目源代码可在GitHub上...

    react移动端项目构建,react@18.2.0+react-vant+vite+axios+redux+sass

    axios:https://www.axios-http.cn/docs/api_intro vite:https://vitejs.cn/ redux:https://cn.redux.js.org/index.html redux-persist:https://github.com/rt2zz/redux-persist sass:...

    OctoLinker-crx插件

    不用担心,octOlinker链接到API文档如nodejs.org/en/docs docs.python.org docs.oracle.com或rubygems.org。拉请求代码审查很容易。 octOlinker将依赖关系和文件链接在拉出请求上,以便您可以专注于重要的工作 - ...

    react移动端项目构建TS,react@18.2.0+react-vant+vite+axios+redux+sass+ts

    axios:https://www.axios-http.cn/docs/api_intro vite:https://vitejs.cn/ redux:https://cn.redux.js.org/index.html redux-persist:https://github.com/rt2zz/redux-persist sass:...

    react PC端项目构建TS,react@18.2.0+antd+vite+axios+redux+sass+ts

    axios:https://www.axios-http.cn/docs/api_intro vite:https://vitejs.cn/ redux:https://cn.redux.js.org/index.html redux-persist:https://github.com/rt2zz/redux-persist sass:...

    react PC端项目构建,react@18.2.0+antd+vite+axios+redux+sass

    axios:https://www.axios-http.cn/docs/api_intro vite:https://vitejs.cn/ redux:https://cn.redux.js.org/index.html redux-persist:https://github.com/rt2zz/redux-persist sass:...

    基于nodejs的书籍销售系统和微信小程序源码.zip

    3. 微信小程序开发:WXML(结构语言)、WXSS(样式语言)、JavaScript(逻辑层)、API调用、页面生命周期、组件和样式使用。 4. RESTful API设计:理解HTTP方法(GET、POST、PUT、DELETE)和状态码,设计清晰的接口...

    后端开发框架:教程&案例&相关项目.md

    - **入门教程**:[Express.js 教程](https://developer.mozilla.org/en-US/docs/Learn/Server-side/Express_Nodejs) 是 Mozilla 提供的一系列教程,帮助初学者逐步掌握 Express.js 的使用技巧。 **知识点三:案例...

Global site tag (gtag.js) - Google Analytics