var http = require('http');
var fs = require('fs');
var request = require('request');
var CryptoJS = require('crypto-js');
function decode(code) {
code = code.replace(/^eval/, '');
return eval(code);
}
function encode(code){
code = code.replace(/[\r\n]+/g, '');
code = code.replace(/'/g, "\\'");
var tmp = code.match(/\b(\w+)\b/g);
tmp.sort();
var dict = [];
var i, t = '';
for(var i=0; i<tmp.length; i++) {
if(tmp[i] != t) dict.push(t = tmp[i]);
}
var len = dict.length;
var ch;
for(i=0; i<len; i++) {
ch = num(i);
code = code.replace(new RegExp('\\b'+dict[i]+'\\b','g'), ch);
if(ch == dict[i]) dict[i] = '';
}
return "eval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)d[e(c)]=k[c]||e(c);k=[function(e){return d[e]}];e=function(){return'\\\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\\\b'+e(c)+'\\\\b','g'),k[c]);return p}(" + "'"+code+"',"+a+","+len+",'"+ dict.join('|')+"'.split('|'),0,{}))";
}
function downloadPic(url,filePath,fn){
var r = request(url).pipe(fs.createWriteStream(filePath));
r.on('close', function(){
fn();
}).on('error',function(){
log('download pic error!');
if(nextChapterPath && chapterNow < chapterNum){
downloadChapter(nextChapterPath);
}else{
chapterNow++;
}
});
}
function downloadFiles(arr,baseDir){
var length = arr.length;
var i = 0;
function loadNext(index){
downloadPic(encodeURI(picDomain + jsonData.path + arr[i]), baseDir + '/' + index + '.jpg',function(){
i++;
if(i < length){
console.log('Pictrure ' + (index + 1 + '/' + jsonData.len) + ' done!');
loadNext(i);
}else{
console.log('Chapter ' + jsonData.cname + ' All done!');
chapterNum++;
if(chapterNum < maxChapterNum){
downloadChapter(chapterNum + '.html');
}
}
});
}
loadNext(i);
}
var baseDir = 'F:/node_test/Pictures/';
var picDomain = 'http://somedomain.pic.com';
var dataReg = new RegExp("decryptDES\\(\\'([\\w+/=]+)\\'\\)");
var jsonData = null;
var chapterNum = 154731;
var maxChapterNum = 154743;
function log(data){
fs.appendFile(baseDir + 'log.txt',data + '\r\n','utf8',function(err){
if(err)
{
console.log(err);
}
});
}
function decryptDES(t) {
var a = CryptoJS.DES.decrypt({
ciphertext: CryptoJS.enc.Base64.parse(t.substring(8))
}, CryptoJS.enc.Utf8.parse(t.substring(0, 8)), {
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7
});
return a.toString(CryptoJS.enc.Utf8);
}
function downloadChapter(path){
log('//------------------------------------------------------------------//');
var page = 'http://somepage.url.com/' + path;
log('正在读取页面:' + page);
var html = '';
http.get(page , function(res) {
res.setEncoding('utf-8');
res.on('data', function(data) {
// collect the data chunks to the variable named "html"
html += data;
}).on('end', function() {
var dir = baseDir;
if(dataReg.test(html)){
var str = decryptDES(RegExp.$1);
str = str.replace(/^eval/,'');
str = eval(str);
log('页面数据:\r\n' + str);
str = str.replace('var cInfo=','return ');
//字符串转对象
jsonData = (new Function(str))();
dir += jsonData["cname"];
if (!fs.existsSync(dir)) {
fs.mkdirSync(dir);
log('文件存放目录:' + dir);
}else{
console.log(dir + ' 已存在!');
return;
}
downloadFiles(jsonData["files"],dir);
}else{
return;
}
});
});
}
downloadChapter( chapterNum + '.html');
分享到:
相关推荐
用node爬取网站图片
基于python简单的爬取各种网站图片的源代码,简单的爬取网站图片的python
python并发爬取网站图片的DEMO,代码清晰,简单明了,非常适合在学习其他爬虫框架前打基础。
自己动手用Python写了一个爬取网站图片的爬虫,用着感觉还行,分享给大家
将网页代码保存为html文件,通过本代码即可爬取出网页中图片的url,对于小白来说十分容易看懂原理,快来下载吧
使用python对网站进行爬取图片信息,讲解非常详细,最全讲解。拥有最详细的讲解、最好的解释、最清晰的思路,这就是我们最纯粹的技术,也是我们的优势,相信这个程序可以为你打开爬虫道路上的一扇窗,也可以为你从...
一个简单的网站图片下载爬虫程序
爬取百度图片的数据爬取百度图片的数据
此代码是爬取整站的完整代码,运行就可以直接爬完站上所有的图片。 但是以为代码是python2的,如果使用python3的朋友请自行修改相关函数,代码中也有相关的注释。 代码使用多线程进行批量下载 文章地址:...
替换网址和存储位置即可使用 实现一个网络爬虫应用程序的编码、调试和运行。并限定只抓取网页中的图片信息。 Python 3.8
py文件,直接可以运行,可从控制台和Pycharm打开,有详细的注释,基础学习练手的最佳实例
python爬取百度图片 使用任意关键字 python爬取百度图片 使用任意关键字 python爬取百度图片 使用任意关键字 python爬取百度图片 使用任意关键字 python爬取百度图片 使用任意关键字 python爬取百度图片
python爬取百度图片,通过更改标签名,可以爬取各种类型的图片,如动物,水果,美女,动漫等等,还可以通过更改格式来保证下载的图片格式一致。还有图像批量处理程序是统一爬取图片的分辨率,名称,格式。
爬取网站图片: 1. 用 Jupyter Noteboke 打开; 2. 用到了requests库,如百度图片等; 3. json()函数; 4. 二进制格式储存图片;
python爬虫爬取网页图片,依据url爬取并将爬取的图片保存在本地
通过实例给大家讲解nodejs实现爬取网站图片功能,以下就是全部内容: 原理: 爬虫是最明显的IO密集型应用场景,显然用node,使得I/O等待开销小数据挖掘比较方便 借助express模块来搭建node服务 并使用request模块...
node.js学习代码,一个是爬取图片到本地,一个是爬取网页内容存入数据库,通过这两个实例代码可以了解到Node.js中mysql和fs这两个模块的简单的使用方法。
爬取图片,并且保存mysql,,selenium,多进程爬取网站的图片信息,保存至mysql