使用node自动生成html并调用cmd命令提交代码到仓库

生成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(定时调度模块)写了一个抓取的框架

2. 保存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+'生成失败');
            }
        });
    }

3. 使用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('删除脚本成功');
    }
})

4. 啥?怎么提交到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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏施炯的IoT开发专栏

IM over Socket Between Windows Mobile Devices

    在《利用WiFi在Windows Mobile上建立Ad-hoc网络》一文中,讲述了利用WiFi在Windows Mobile上建立Ad-hoc网络的方...

20210
来自专栏Laoqi's Linux运维专列

集群架构の のzabbix 监控

48010
来自专栏Golang语言社区

HTTP协议漫谈

简介 园子里已经有不少介绍HTTP的的好文章。对HTTP的一些细节介绍的比较好,所以本篇文章不会对HTTP的细节进行深究,而是从够高和更结构化的角度将H...

3836
来自专栏博客园迁移

jenkins自动部署应用到tomcat中,编译后shell脚本的简单示例

1.先配置好jenkins需要用到的其他外部组件  jdk,maven,git/svn

1983
来自专栏云计算教程系列

如何在Ubuntu 14.04上使用Pydio托管文件共享服务器

随着云的采用增加,越来越多的数据被远程存储。从音乐到图片再到个人文档,很多人都将文件上传到他们不管理的服务器上。如果您希望将文件保存在您控制的服务器上,则可以使...

3590
来自专栏云计算教程系列

如何使用Ubuntu 16.04的Django一键安装镜像

Django是一个用于快速开发Web应用程序的高级Python框架。Django一键安装程序通过Django,Nginx,Gunicorn和Postgres为您...

1785
来自专栏自动化测试实战

《selenium2 python 自动化测试实战》(10)——下拉框和alert

3956
来自专栏along的开发之旅

Http请求和HttpServletRequest中获得对应参数的方法

一个Http请求可以分为请求行, 请求头, 和可选的实体内容, 我们分别来看下http和HttpServletRequest中的方法如何对应.

841
来自专栏木子昭的博客

nodejs爬虫获取漫威超级英雄电影海报

1643
来自专栏我的博客

上拉加载更多

第一个 第二个 $(function(){ var counter = 2;//开始加载 var num = 6;//每页数量 ...

3776

扫码关注云+社区

领取腾讯云代金券