生成html提交到git仓库

基于目前的express博客,写了一点代码,通过request模块来请求站点,将html保存到coding-pages目录,复制静态文件夹到coding-pages,最后使用node的child_process模块执行cmd命令提交到仓库~~

  1. 发送http请求

var request = require('request');
var options = {
url: url,
encoding: null,
headers: { 'User-Agent': 'Mozilla/5.0 (Macintosh;
Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.65 Safari/537.36' }
};
request(options, function (error, response, body) {
//请求的回调,编码问题使用iconv模块解决
//var iconv = require('iconv-lite');
//var html=iconv.decode(body,'utf-8');
//若是需要解析html则可以使用cheerio模块
//var cheerio=require('cheerio').load(html,{decodeEntities: false});
//然后就可以像jqueryy一样去解析html了。
//cheerio('选择器');
});

然后就可以愉快的抓数据了。之前也写过基于request,iconv,cheerio,schedule(定时调度模块)写了一个抓取的框架

  1. 保存html到目录

得到url的路径部分(除去域名),即:/index.html,/msg.html...

现在只需要根据这个路径和获取到的html保存即可

此时有了保存的路径和内容,保存还不小事一桩么。如下。

    function writeText(pathName,content){
var dir= pathHelper.dirname(pathName);//获取到路径中的目录
fs.exists(dir, function (exists) {//如果不存在则创建目录
if(exists==false){
fs.mkdir(dir);
}
});
fs.writeFile(pathName, content, function (err) {//写入内容
if (err){
console.log(pathName+'生成失败');
}
});
}
  1. 使用node执行.bat文件复制静态文件到coding-pages目录

复制目录可以使用async模块实现的目录操作

调用copyDir方法即可。

也可以使用child_process模块来调用cmd命令实现

注:直接使用require('child_process').exec 执行xcopy并不能复制目录,需要一种折中的方式

如下:

var exec = require('child_process').exec;
var execbat = __dirname + '\\exec.bat';
//1. 创建复制脚本
commonHelper.writeText(execbat, 'xcopy F:\\CodingRepos\\yimocoding\\coding-pages\\tag F:\\CodingRepos\\yimocoding\\coding-pages\\tag3 /s /e /Q /Y /I');
//2.执行批处理复制目录
exec(execbat, function (err, stdout, stderr) {
if (err) {
console.log(err);
}
else{
console.log('复制成功');
}
});
//3.删除批处理文件
exec('del ' + execbat, function (err, stdout, stderr) {
if (err) {
console.log(err);
}else{
console.log('删除脚本成功');
}
})
  1. 啥?怎么提交到git

运行环境安装好。能从cmd命令提交(配置环境变量)

然后,看代码呗~~

var cmds = [
'git add *',
'git commit -m "提交。。。"',
'git push'
]
cmds.forEach(function (cmd, i) {
setTimeout(function () {
console.log(cmd);
exec(cmd, function (err, stdout, stderr) {
if (err) {
console.log(err);
}
});
}, i * 1000);
})

写文章还是挺累的。但是把用到的东西记录下来是有必要的。文笔欠佳,然记录一二也是挺好滴。

源码地址:https://coding.net/u/yimocoding/p/yimocoding/git/blob/coding-pages/index.js

使用node自动生成html并调用cmd命令提交代码到仓库的更多相关文章

  1. 根据wsdl文件,Java工程自动生成webservice客户端调用

    根据wsdl文件,Java工程自动生成webservice客户端调用 1,工具:带有webservice插件的myeclips 2,步骤: (1),新建一个Java工程:relationship (2 ...

  2. 根据wsdl文件,Web工程自动生成webservice客户端调用

    根据wsdl文件,Web工程自动生成webservice客户端调用 1,工具:带有webservice插件的eclips 2,步骤: (1),新建一个Web工程:WSDLTest (2),浏览器访问W ...

  3. myapp——自动生成小学四则运算题目的命令行程序(侯国鑫 谢嘉帆)

    1.Github项目地址 https://github.com/baiyexing/myapp.git 2.功能要求 题目:实现一个自动生成小学四则运算题目的命令行程序 功能(已全部实现) 使用 -n ...

  4. python调用cmd显示中文乱码及调用cmd命令

    os.system('dir') 解决方法加上 os.system('chcp 65001') ____________________________________________________ ...

  5. C语言调用Cmd命令以及执行系统软件

    C语言调用Cmd命令以及执行系统软件 http://blog.csdn.net/qq_16814591/article/details/43676377

  6. IE浏览器中使用js调用cmd命令行demo

    <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="C ...

  7. Python调用cmd命令

    常用的两种方式: 1.python的OS模块. OS模块调用CMD命令有两种方式:os.popen(),os.system(). 都是用当前进程来调用. os.system是无法获取返回值的.当运行结 ...

  8. eclipse根据.wsdl文件自动生成webservice的调用客户端

    1.工具:eclipse3.3或者是带有webservice插件的eclipse 2. 首先用浏览器访问webservice的站点,接着保存打开的页面,后缀为.wsdl. 3.把保存好的文件拷入ecl ...

  9. 使用Signature Tool自动生成P/Invoke调用Windows API的C#函数声明【转】

    原文链接:https://blog.csdn.net/Donjuan/article/details/3865026在网上看到很多网友在.NET程序中调用Win32 API,或者调用自己的VC DLL ...

随机推荐

  1. LAB8 android

    妈的,标签名字能改成自己的名字,我也是个神人嘞. 明明是去掉两个括号,怎么变成3个了,醉了. 点组件,attribute,可以修改对应的值.非常直观?. content_mail.XML要设置ID才能 ...

  2. Codeforces Round #552 (Div. 3) D题

    题目网站:http://codeforces.com/contest/1154/problem/D 题目大意:给出n个数(0或1),还有a , b, a是蓄电池容量,b是电池容量,数为1时蓄电池可以充 ...

  3. Retrofit 2.0 上传文件

    1.用MultipartBody.Part的方式上传文件(单文件上传)(表单方式) @Multipart @POST("xxx/xxx") Call<ResponseBody ...

  4. java实验环境搭建,eclise下载与使用

    一.1.官方下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html 下载后安装,默认安装即可. 2.在 wind ...

  5. vue自定义滚动条

    参照element-ui的el-scroll自己实现了一个自定义组件,代码如下: <template> <div class="c-scroll-box" ref ...

  6. [DP][NOIP2015]子串

    子串 题目描述 有两个仅包含小写英文字母的字符串 A 和 B. 现在要从字符串 A 中取出 k 个 互不重叠 的非空子串, 然后把这 k 个子串按照其在字符串 A 中出现的顺序依次连接起来得到一个新的 ...

  7. 2,fiddler的基本设置

    1,首次打开的基本设置 2,过滤抓包的内容 1)较为常用的是: URL包含和hosts的设置 2)不常用的是 3,设置https 这是实在安装证书,当还是不能抓到https的包的时候,可以区安装彼得证 ...

  8. 为nginx创建windows服务自启动

    1.下载最新版的 Windows Service Wrapper 程序,比如我下载的名称是 "winsw-1.9-bin.exe",然后,把它命名成你想要的名字(比如: " ...

  9. 用grunt对css代码进行压缩

    1.先安装Node.js环境 Grunt和 Grunt 插件是通过 npm 安装并管理的,npm是 Node.js 的包管理器.Node.js的下载链接 安装完后进行验证 2.安装grunt及插件 通 ...

  10. Vue实现跑马灯的效果

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...