Nodejs 值得收集的代码片段

2016-02-04 11:18:57 +08:00
 hualishu

1 、关于 Nodejs 的静态资源压缩与缓存参见: Nodejs 打造静态资源服务器与文件上传刚学 Express 那会,动态文件的 gzip 压缩,好长一段时间都没找到合适的方法,才发现就是这么简单……
app.js 里添加 compression 模块:
先安装; var compress=require('compression');app.use(compress()); OK 了动态文件也能 gzip 压缩了;

2 、抓取妹子的图片:

复制代码

———————————————————————————————————————————————
//依赖模块
var fs = require('fs');
var request = require("request");
var cheerio = require("cheerio");
var mkdirp = require('mkdirp');

//目标网址
var url = 'http://me2-sex.lofter.com/tag/美女摄影?page=';

//本地存储目录
var dir = './images';

//创建目录
mkdirp(dir, function(err) {
if(err){
console.log(err);
}
});

//发送请求
request(url, function(error, response, body) {
if(!error && response.statusCode == 200) {
var $ = cheerio.load(body);
$('.img img').each(function() {
var src = $(this).attr('src');
console.log('正在下载' + src);
download(src, dir, Math.floor(Math.random()*100000) + src.substr(-4,4));
console.log('下载完成');
});
}
});

//下载方法
var download = function(url, dir, filename){
request.head(url, function(err, res, body){
request(url).pipe(fs.createWriteStream(dir + "/" + filename));
});
};
———————————————————————————————————————————————

3 、解压文件

复制代码

——————————————————————————————————————————————
var fs = require('fs'),

unzip = require('unzip');

//fs.createReadStream('./angular-swipe-master.zip').pipe(unzip.Extract({ path: './' }));
var extract = unzip.Extract({ path: './' });

extract.on('error', function(err) {

console.log(err);

});

extract.on('finish', function() {

console.log("unziped!!");

});

fs.createReadStream('./angular-swipe-master.zip').pipe(extract);

———————————————————————————————————————————————

压缩文件

复制代码

———————————————————————————————————————————————
var fs = require("fs");
var zip = require("node-native-zip");

var archive = new zip();

archive.addFiles([

{ name: "app.j", path: "./app.js" },
{ name: "package.json", path: "./package.json" }
], function (err) {
if (err) return console.log(err);

var buff = archive.toBuffer(); 

fs.writeFile("./test2.zip", buff, function () { 
    console.log("ziped"); 
});

});
———————————————————————————————————————————————

3445 次点击
所在节点    Node.js
4 条回复
hualishu
2016-02-04 11:20:24 +08:00
这几个片段 可以保存下来 挺好用的
chemzqm
2016-02-04 11:23:34 +08:00
gzip 用 nginx 配置更方便控制,其它的 shell 脚本更灵活,做抓取还是 python 的库多些, node 的优势是异步和 stream 可以很大程度提高 io 效率
hualishu
2016-02-04 12:00:02 +08:00
@chemzqm 抓取 我自己比较喜欢 node
breeswish
2016-02-04 13:59:04 +08:00
nodejs 简单到可以轻易自己造一个爬虫了..

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/255342

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX