分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 教程案例

Node.js meitulu图片批量下载爬虫1.01版

发布时间:2023-09-06 01:23责任编辑:林大明关键词:jsNode爬虫

在 http://www.cnblogs.com/xiandedanteng/p/7614051.html 一文我曾经书写过一个图片下载爬虫,但原有程序不是为下载图片而设计故有些绕,于是稍微改写了一下,可读性应该稍好些。功能上和原程序差不多,只是输出目录不是固定在test目录了。代码如下:

//================================================// https://www.meitulu.com图片批量下载Node.js爬虫1.01// 2017年11月5日//================================================// 内置http模块,提供了http服务器和客户端功能var http=require("http");// cheerio模块,提供了类似jQuery的功能var cheerio = require("cheerio");// 内置文件处理模块var fs=require(‘fs‘);// 请求参数JSONvar options;// request请求var req;//--------------------------------------// 程序入口//--------------------------------------function start(){ ???var folder="38"; ???fs.mkdir(‘./‘+folder,function(err){ ???????if(err){ ???????????console.log("创建目录"+folder+"失败"); ???????} ???}); ???var startIndex=1; ???var endIndex=104; ???for(var i=startIndex;i<=endIndex;i++){ ???????downloadPic(folder,i); ???}}//--------------------------------------// 下载图片// folder:图片所在url的目录// pinctureIndex:图片序号//--------------------------------------function downloadPic(folder,pinctureIndex){ ???console.log("开始下载"+pinctureIndex); ???// 初始化options ???options={ ???????hostname:‘mtl.ttsqgs.com‘,// 这里别加http://,否则会出现ENOTFOUND错误 ???????????port:80, ???????????path:‘/images/img/‘+folder+‘/‘+pinctureIndex+‘.jpg‘,// 子路径 ?????????method:‘GET‘, ???}; ???req=http.request(options,function(resp){ ???????var imgData = ""; ???????resp.setEncoding("binary"); ????????resp.on(‘data‘,function(chunk){ ???????????imgData+=chunk; ???????????????????}); ???????resp.on(‘end‘,function(){ ???????????var fileName="./"+folder+"/"+pinctureIndex+".jpg"; ???????????fs.writeFile(fileName, imgData, "binary", function(err){ ???????????????if(err){ ???????????????????console.log("文件"+fileName+"下载失败."); ???????????????} ???????????????console.log(fileName+"下载成功"); ???????????}); ???????????}); ???}); ???// 超时处理 ???req.setTimeout(5000,function(){ ???????req.abort(); ???}); ???// 出错处理 ???req.on(‘error‘,function(err){ ???????if(err.code=="ECONNRESET"){ ???????????console.log(‘socket端口连接超时。‘); ???????}else{ ???????????console.log(‘请求发生错误,err.code:‘+err.code); ???????} ???}); ???// 请求结束 ???req.end();}// 调用start函数,程序开始start();

Node.js meitulu图片批量下载爬虫1.01版

原文地址:http://www.cnblogs.com/xiandedanteng/p/7788877.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved