1 Star 0 Fork 0

zwjtheone/NodeJS-Spider-DEMO

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
haha.mx.js 2.31 KB
一键复制 编辑 原始数据 按行查看 历史
zwjay 提交于 2017-03-31 09:59 . 改名,增加hanhande.com
var http = require('http'); // http 网路
var cheerio = require('cheerio'); // html 解析
var fs = require("fs"); // 流
var mkdirp = require('mkdirp');
// 设置被查询的目标网址
var queryHref = "http://www.haha.mx/topic/1/new/";
// 设置分页位置
var querySearch = 1;
var urls = [];
var dir = 'hahamx';
mkdirp(dir, function (err) {
if (err) {
console.log(err);
}
});
/**
* 根据url和参数获取分页内容
* @param {String}: url
* @param {int}: serach
*/
function getHtml(href, serach) {
var pageData = "";
var req = http.get(href + serach, function (res) {
res.setEncoding('utf8');
res.on('data', function (chunk) {
pageData += chunk;
});
res.on('end', function () {
$ = cheerio.load(pageData);
var html = $(".joke-list-item .joke-main-content a img");
for (var i = 0; i < html.length; i++) {
var src = html[i].attribs.src;
// 筛选部分广告,不是真的段子
if (src.indexOf("http://image.haha.mx") > -1) {
urls.push(html[i].attribs.src)
}
}
if (serach == pagemax) {
console.log("图片链接获取完毕!" + urls.length);
console.log("链接总数量:" + urls.length);
if (urls.length > 0) {
downImg(urls.shift());
} else {
console.log("下载完毕");
}
}
});
});
}
/**
* 下载图片
* @param {String} imgurl:图片地址
*/
function downImg(imgurl) {
// console.log(imgurl);
var narr = imgurl.replace("http://image.haha.mx/", "").split("/")
http.get(imgurl.replace("/small/", "/big/"), function (res) {
var imgData = "";
//一定要设置response的编码为binary否则会下载下来的图片打不开
res.setEncoding("binary");
res.on("data", function (chunk) {
imgData += chunk;
});
res.on("end", function () {
var savePath = "./" + dir + "/" + narr[0] + narr[1] + narr[2] + "_" + narr[4];
fs.writeFile(savePath, imgData, "binary", function (err) {
if (err) {
console.log(err);
} else {
console.log(narr[0] + narr[1] + narr[2] + "_" + narr[4]);
if (urls.length > 0) {
downImg(urls.shift());
} else {
console.log("下载完毕");
}
}
});
});
});
}
var pagemax = 20; // 获取10页的内容
function start() {
console.log("开始获取图片连接");
for (var i = 1; i <= pagemax; i++) {
getHtml(queryHref, i);
}
}
start();
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
JavaScript
1
https://gitee.com/zwjtheone/NodeJS-Spider-DEMO.git
git@gitee.com:zwjtheone/NodeJS-Spider-DEMO.git
zwjtheone
NodeJS-Spider-DEMO
NodeJS-Spider-DEMO
master

搜索帮助